JavaでXMLを扱おうと思っているのですが、
XMLを扱う(編集)するパッケージに
dom
SAX
JDOM
JAXP
といろいろあるようですが
どのパッケージが扱いやすいものでしょうか
初めての場合はどれが良い等
情報をいただけないでしょうか
よろしくお願いいたします。
DOM
DOMのAPIは、特定の言語を想定しないで既定されているので、
Javaの他のAPIとくらべるとちょっと使い勝手が悪いと感じます。
現状ではほとんどこれが使われているので、
資料やサンプルを見つけやすいというのはメリットかも。
SAX
SAXは、XMLを解析する途中のタグの開始/終了などをイベントとして受け取る
APIです。文書を1回読むだけで、しかも親子構造を意識する必要がないよう
な特殊な状況でしか使い道がありません。
JDOM
JDOMは、DOM APIをJava風に書き換えたものです。JavaのCollection API
と同じ感覚で使えるので、Javaには慣れているがXMLは初めてというのなら、
扱いやすいのではないでしょうか。
JAXP
JAXPは上記3つとは関係なく、XMLのパーサーを汎用的に得る手法を
提供するAPIです。JDK1.4が利用可能であれば使うべきでしょう。
RELAXERも調べてみると良いかもしれません。
dairygoods さんレスありがとうございます。
Sun Java XML Pack - Summer 02 Update Release
をすでに取得積みでした。
JAXPが今後スタンダードに成りそうな感じがしたので使って
みようかと思います。
JAXPはインターフェイスの制定だけのように感じたのですが
実際JAXPを通してDOMを使うような形になるんですかね
DOMやSAXのパーサーは、いろいろなベンダーが提供しています。
それらを使う場合、普通はベンダー依存のコードを書かねばなりません。
(つまり、ベンダー固有のクラス名が必要)
JAXPは、そのベンダー依存の部分をソースコードから
排除するためのフレームワークです。
JAXPを使うと、ベンダークラスに依存しない形で
DOMまたはSAXのパーサーを取得できます。
なので、JAXPを使う/使わない というのと、
DOM,SAX,JDOMを使う/使わないは別次元の話です。
JAXPにはおまけでSun謹製のXMLパーサーが付属しているので、
JAXPもパーサーの1つであると誤解される方もいるようです。
> JAXPは、そのベンダー依存の部分をソースコードから
> 排除するためのフレームワークです。
> JAXPを使うと、ベンダークラスに依存しない形で
> DOMまたはSAXのパーサーを取得できます。
この部分は非常に重要でした。
いくつかXMLを取り扱ったJavaのソースサンプルを入手したのですが、
ベンダー依存の関係で動かなかったりしています。
ApacheのxercesとJAXPがメインでしょうか
私の印象ではまだ煮詰まっていない技術のように感じました。
書籍も日本語になっているものがあまりにも少ない気が
しますし、苦難の道を歩まねばいけないようです。
がんばってみます
ありがとうございました。