【XML】 XML API の使い分けについて

■ はじめに

Java で XML を扱う際に、色々なAPIがあるので、調べてみた。

目次

【1】JAXB
【2】DOM (Document Object Model)
【3】SAX (Simple API For XML)
【4】StAX(Streaming API for XML)
【5】xPath (XML Path Language)
【6】XML Schema

 【1】JAXB

 *  XML ⇔ Java オブジェクトを相互変換する際に使用

 参考文献
http://msugai.fc2web.com/java/XML/XPath.html

 【2】DOM (Document Object Model)

 * XMLをツリー構造として扱うことができる
 * 主に、XML構造が不明な場合に使用する

 デメリット

 通常の場合、対象XMLを全て読み込んでから動作するため...

 * 動作速度が遅い
 * メモリーの使用量が大きくなる

 【3】SAX (Simple API For XML)

 * XMLを構文解析を進めながら必要な情報を取得
 * 主に、XML構造が不明で情報取得のみ(更新不要)な場合に使用する

 デメリット (というより 注意点)

 * XML文書を更新することはできない

 【4】StAX(Streaming API for XML)

 * 長大なXMLドキュメントの一部しか必要がない場合...
   => SAXやStAXで必要なところまで読み飛ばし、必要なところだけJAXBでアンマーシャリングする
 * そのままSAXやStAXでパースしてもいいが、スキーマがある場合はJAXBが楽

 参考文献
http://itpro.nikkeibp.co.jp/article/COLUMN/20080613/307995/?ST=develop&P=1
http://www.javainthebox.net/laboratory/JavaSE6/stax/stax.html
http://otndnld.oracle.co.jp/document/products/wls/docs90/xml/stax.html

 【5】xPath (XML Path Language)

 * XML から、条件に適合した要素を取り出す際に使用
 * ある程度のXML構造が分かっており、
 そのXML全体の情報を必要ではなく、一部のデータを読み書きするだけであれば使用するのにいいかも

 参考文献
http://msugai.fc2web.com/java/XML/XPath.html
http://www.atmarkit.co.jp/ait/articles/0206/18/news002.html
 関連記事
https://dk521123.hatenablog.com/entry/2014/07/03/000100
https://dk521123.hatenablog.com/entry/2014/06/17/011538

 【6】XML Schema

 * XMLを検証する際に使用

 参考文献

http://csharp.keicode.com/topics/xml-xsd-validation.php

 関連記事

Java

xPathXMLの参照・書き換え~
https://dk521123.hatenablog.com/entry/2014/07/03/000100
xPathXMLの書き換え~
https://dk521123.hatenablog.com/entry/2014/06/17/011538

その他

セレクタ
https://dk521123.hatenablog.com/entry/2021/02/27/000000