Androidの XML SAX パーサー、プル パーサー、DOM パーサーの違いを知りたいです。どの条件で、どちらがパフォーマンスと実装で優れていますか?
ありがとう。ホバイブ。
Androidの XML SAX パーサー、プル パーサー、DOM パーサーの違いを知りたいです。どの条件で、どちらがパフォーマンスと実装で優れていますか?
ありがとう。ホバイブ。
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 .
Sax Parser: XMLのシンプルなAPIノードからノードへの解析、トップダウントラバースを使用、xmlを保存せずに解析、Domと比較して高速挿入や削除などのノードの操作が許可されます。SAXParserFactoryが必要
Dom Parser:ドキュメントオブジェクトモデル処理前にxml全体をメモリに保存し、任意の方向にトラバースします。挿入や削除などのノードの操作は許可されていません。DocumentBuilderFactoryが必要
プルパーサー:上記の2つからより多くの制御と速度を提供します。pullParserFactoryが必要
パフォーマンスに関しては、SAXは一般的にはるかに少ないメモリを使用します。また、startElement()、startDocument()、endElement()など、必要なイベントのみを処理するため、必要な特定のデータのみを保存します。DOMはXMLファイル全体をメモリにロードします。