[flutter]xmlをパースする方法

image

使用するパッケージ

xmlというパッケージを使用していきます。

公式ドキュメントにも記載されていますが、以下の点に注意してください。

注意点

このライブラリは、静的拡張メソッドを多用しています。ライブラリプレフィックスを使用してライブラリをインポートしたり、 クラスを選択的に表示するだけでは、その機能の一部を見逃す可能性があります。歴史的な理由により、公開クラスは Xml 接頭辞を持つので、他のコードと衝突することはほとんどありません。

XMLの読み込み方

文字列から読み込む

文字列からxmlを読み込んで、パースできる状態にするコードは以下の通り。

変数documentの型はxmlDocumentとなっており、この変数を起点に様々なパースをしていきます。

documentを出力した結果は以下の通りで、そのまま出力されていることがわかります。

ちなみにxmlの読み込みに失敗すると例外が投げられます。

ファイルから読み込む方法

ファイルからxmlを読み込むときは以下の方法で読み込めます。

注意点

webアプリケーションではFile()が使えないので以下のコードは書けません。

パースの仕方

nodeの子を取得する

childrenメソッドで取得できます。

resultを出力した結果は以下の通り。

XMLの構造から推測すると以下の三つの要素ごとにわけてリストとして取得できているっぽい。

  • XML宣言部:<?xml version=”1.0″?>
  • DTD:今回はないので空
  • XML本体:<bookshelf>〜</bookshelf>まで

特定のタグを持つ要素を検索する方法

findAllElements()メソッドで特定のタグを持つ要素を検索できる。

resultを出力すると以下のようになる。

またタグの中身だけ取り出したい場合は以下のようにmapを使えば良い。

resultを出力すると以下のようになる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


error: Content is protected !!