私はもっと小さい(せいぜい数MB、UTF-8でエンコードされた)XMLファイルを読み、さまざまな要素や属性を見て回って、おそらく少し修正してXMLをディスクに書き戻す必要があります。 。
私のニーズに最適なXMLパーサーは何でしょうか。から選ぶべきたくさんあります。私が知っているいくつかは次のとおりです。
そしてもちろんJDKの中のもの(私はJava 6を使っています)。私はXercesに精通していますが、不格好です。
おすすめは?
速度とメモリに問題がなければ、dom4jが本当に良い選択肢です。スピードが必要な場合は、WoodstoxのようなStAXパーサーを使用するのが正しい方法ですが、作業を進めるにはさらにコードを記述する必要があります。 XMLをストリームで処理するために使用されます。
私はあなたが特定のパーサーの実装を考慮すべきではないと思います。 XML処理用のJava API を使用すると、標準に準拠したパーサー実装を使用できます。コードはもっと移植性があるはずです、そして特定のパーサが古すぎると気づいたら、コードの行を変えずに別のものに置き換えることができます(正しく行なえば)。
基本的に、標準的な方法でXMLを処理する方法は3つあります。
JDOMやApacheなどの独自のAPI(つまり、 Apache Xerces XMLSerializer )については忘れてください。互換性があるため、将来JDOMの新しいバージョンにアップグレードするとき、または使用するすべてのパーサーにアップグレードするときに、コードを変更することになります。ファクトリとインタフェースを使用してJava標準APIに固執すると、コードははるかにモジュール化され、保守が容易になります。
提案されたパーサーのすべて(私はすべてチェックしていませんが、ほぼ確実です)がJAXP実装に準拠していると言う必要はありませんので、技術的にはすべてを使用できます。
これは、DOM、SAX、StAX、およびTrAXについての素晴らしい比較です(出典: http://download.Oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/SJSXP2 .html )
機能StAX SAX DOM TrAX
APIタイププル、ストリーミングプッシュ、ストリーミングメモリツリー内XSLTルール
使いやすさ高中高中
XPath機能いいえいいえはいはい
CPUとメモリ良い良いさまざまな
転送のみはいはいいいえいいえ
XMLの読み取りはいはいはいはい
XMLを書くはいいいえはいはい
CRUDいいえいいえはいいいえ
単純なXML http://simple.sourceforge.net/ は、オブジェクトを(非)シリアライズするのに非常に簡単です。
SAXおよびDOMに加えて、XMLプルパーサーであるXMLStreamReaderを使用して利用可能なSTaX解析があります。
私はdom4jがXMLを扱うためのツールであることがわかりました。特にXercesと比較して。
私はこれをお勧めしませんが、あなたはあなたのアプリケーションで多くの「考え」を持っています、しかしXSLTを使うことはJava操作より良い(そして潜在的にXSLTからバイトコードへのコンパイルで速い)かもしれません。
パフォーマンスをあまり気にしないのであれば、基本的にXMLからJava Beansに直接マップできるので、私はApache Digesterの大ファンです。
それ以外の場合は、最初に解析してからオブジェクトを構築する必要があります。