5

xmlreader と、simplexml や dom などの他のツリーベースのパーサーとの違いを知っています。しかし、xmlreader と xmlparser の違いは何でしょうか? 1 つを別のものに使用する利点はありますか?

比較的大きな xml ファイルを解析する必要があり、約 100M のデータ フィードを関連付けます。

4

2 に答える 2

4

これらは、プッシュとプルの2つの異なるソフトウェアアーキテクチャを利用しています。

XMLReaderは「プルパーサー」です。大きなループを作成し、read()関数を呼び出してカーソルを前方に移動する必要があります。このソフトウェアアーキテクチャは、直感的に理解しやすい傾向があります。

XMLParserは、イベントベースの「プッシュパーサー」です。start_element、end_element、character_data、start_namespace_declなどのイベントによってトリガーされるコールバック関数を登録する必要があります。xml_parse()を呼び出すと、Expatライブラリはコールバック関数を使用してXMLドキュメント全体を処理します。

プッシュアーキテクチャとプルアーキテクチャの微妙な違いを理解していない場合は、XMLReaderから始めることをお勧めします。これは、「プル」の方が理解しやすく、視覚化しやすいためです。

于 2013-02-12T00:44:53.207 に答える
0

これについては専門家ではありませんが、PHP のドキュメントによると、XMLReader が適しているようです。「リーダーは、ドキュメント ストリームを進み、途中の各ノードで停止するカーソルとして機能します。」理論的には、これにより、特に大きなファイルでのメモリの問題/リークを防ぐことができます。

http://www.php.net/manual/en/intro.xmlreader.php

XMLParser は配列を返すため、より大きな xml ファイルではメモリの問題が発生する可能性があります。

于 2012-08-21T07:48:50.290 に答える