StAX – Java SE 6

次はJava SE 6の新機能を勉強。

Java SE 6 Mustang新機能

今回は、Streaming API for XML、通称 StAX というものを使ってみます。これはDOM、SAXに続く新しいXMLパーサ。StAX では 2 種類の方法でパースをすることができます。ひとつが Cursor API で、もうひとつが Event Iterator API 。ここではCursor APIを使ってみます。

「XMLファイルを読み込み、要素が開始されるとその要素名を標準出力に出力」

次のXMLをパースしてみます。

実行結果:

XML データの読み取りに使用する XMLStreamReader インタフェースのインスタンスを取得するにはjavax.xml.stream.XMLInputFactory の createXMLStreamReader メソッドを使用します。

XMLStreamReader を用いると、XML データの先頭から順番に読み取り専用アクセスを行うことができます。XMLStreamReader の使い方は、読み取ることができる要素が残っていることを hasNext メソッドで判定し、next メソッドで次の要素へ移動する、その他のメソッドで現在の要素の値などを取得する、という具合です。ここでは、イベントタイプが要素の開始を示すSTART_ELEMENTの場合、getNameメソッドを使用して要素の名前を出力しています。今回はgetNameメソッドで要素名だけ出力させましたが、属性名ならgetAttributeNameメソッド、名前空間ならgetNamespaceURIメソッドなど、他にもいろいろ取れます。また、イベントタイプがCHARACTERSの場合、getTextメソッドで要素内容(”ミク”、”初音”、”女性”など)を取得することができます。

StAXは読むだけじゃなく、XMLを書き出すこともできます。Event Iterator API含め、続きはまた今度。

参考:Java SE 6 じゃじゃ馬ならし

あわせて読む:

コメントを残す

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