xml文字列を解析し、特定のテキストノードの値、属性値などを見つける必要があります。これはjavascriptで実行しており、同じようにDOMParserクラスを使用していました。後で、DOMは多くのメモリを消費し、SAXがより良いオプションであると知らされました。
最近、XPathもノードを見つける簡単な方法を提供していることがわかりました。
しかし、これら3つのうちどれがXMLを解析するための最も効率的な方法であるかはわかりません。親切に助けて...
SAX はトップダウン パーサーであり、XML ドキュメントへのシリアル アクセスを可能にし、読み取り専用アクセスに適しています。一方、DOM はより堅牢です。XML ドキュメント全体をツリーに読み込み、その XML ツリー内のデータを変更、追加、削除する場合に非常に効率的です。XPath は、XML ドキュメントからいくつかの値のみが必要であり、それらの値を見つける場所がわかっている (データのパス /root/item/challange/text がわかっている) 場合に役立ちます。
SAX: ドキュメントを反復処理する際の時間効率が高く、反復ごとに 1 つのパスが提供されます
DOM: 柔軟でパフォーマンスが高く、データを操作する方法が増えます
XPath: いくつかの値を読み取るだけでよい場合の時間効率
ストリーミングXPathのリサーチプロトタイプを使用していない限り、XPathエンジンがすべてをメモリにロードしている可能性が非常に高いため、DOMと同様の特性を備えています。したがって、それはむしろ「効率」の定義に依存します。確かに使いやすく、XPathの実装はより効率的になるように変更される可能性がありますが、DOMは常にクライアントマシン上でドキュメント全体の表現を持ち、SAXは常にXPathよりもプログラミングがはるかに面倒です。
MSDNのこのドキュメントは、XML処理の最適化に関する豊富な情報を提供します。
特に、XPathDocumentクラスは、(DOMベースの)XmlDocumentクラスを使用するよりも効率的にXPath式を評価できるように設計されています。その理由は、XPathDocumentはXMLドキュメントの読み取り専用表現であるのに対し、DOM実装はドキュメントの変更もカバーしているためです。
DOMを使用することには、それほど重要ではないという欠点があります。それは、通常、理解と保守が難しい複雑なスパゲッティのようなコードになります。
http://code.google.com/p/jlibs/wiki/XMLDogを参照してください
XMLDog に一連の xpath を渡し、XML ドキュメントのスニッフィングを依頼します。SAX を使用し、ドキュメントを 1 回通過するだけで、指定されたすべての XPath を評価します。
特定のテキスト ノードの値のみを検索する必要がある場合は、XPath. DOM が大量のメモリを消費する理由は、DOM が XML 全体を読み取り、ドキュメントのツリーを形成するためです。SAX はイベントベースです。したがって、説明した内容に基づいて、XPath がシナリオに最適です。