15

Androidの XML SAX パーサー、プル パーサー、DOM パーサーの違いを知りたいです。どの条件で、どちらがパフォーマンスと実装で優れていますか?

ありがとう。ホバイブ。

4

3 に答える 3

33

Dom Parser -オブジェクト ベースのアプローチ を使用します。つまり、最初に XML 全体をメモリにロードし、XML ノードをオブジェクトに変換してから、それらの解析を開始します。そのため、かなり遅くなります。

SAX および PULL パーサー -イベント ベースのアプローチを使用します。どちらもメモリとパフォーマンスの点でほぼ同じです。ただし、以下で説明するように、それらをいつ使用するかについて、いくつかの際立った状況があります。

Dom Parser -解析する前に XML 全体を検証する必要がある場合に使用します。XML が大きすぎて検証が危険にさらされる可能性がある場合は、決して使用しないでください。解析を開始すると、開始ノードから終了ノードまで解析します。特定のノードのみを解析する方法はありません。

SAX - XML 全体を解析する場合に使用します。解析を開始すると、開始ノードから終了ノードまで解析します。特定のノードのみを解析する方法はありません。

PULL - XML 全体を解析したくない場合に使用します。パーサーの状態を維持する必要がないため、SAX よりも実装が簡単です。関心のある特定のノードのみをプルできます。

私の提案は -検証が必要です - Go for DOM , File size is small or you want to parse theparse of all XML- PULL , File size is large or you need to parse the XML file - Go for SAX .

于 2014-07-02T10:40:41.537 に答える
14

Sax Parser: XMLのシンプルなAPIノードからノードへの解析、トップダウントラバースを使用、xmlを保存せずに解析、Domと比較して高速挿入や削除などのノードの操作が許可されます。SAXParserFactoryが必要

Dom Parser:ドキュメントオブジェクトモデル処理前にxml全体をメモリに保存し、任意の方向にトラバースします。挿入や削除などのノードの操作は許可されていません。DocumentBuilderFactoryが必要

プルパーサー:上記の2つからより多くの制御と速度を提供します。pullParserFactoryが必要

于 2012-07-02T16:18:24.753 に答える
0

パフォーマンスに関しては、SAXは一般的にはるかに少ないメモリを使用します。また、startElement()、startDocument()、endElement()など、必要なイベントのみを処理するため、必要な特定のデータのみを保存します。DOMはXMLファイル全体をメモリにロードします。

于 2012-07-02T16:18:29.277 に答える