xmlreader と、simplexml や dom などの他のツリーベースのパーサーとの違いを知っています。しかし、xmlreader と xmlparser の違いは何でしょうか? 1 つを別のものに使用する利点はありますか?
比較的大きな xml ファイルを解析する必要があり、約 100M のデータ フィードを関連付けます。
xmlreader と、simplexml や dom などの他のツリーベースのパーサーとの違いを知っています。しかし、xmlreader と xmlparser の違いは何でしょうか? 1 つを別のものに使用する利点はありますか?
比較的大きな xml ファイルを解析する必要があり、約 100M のデータ フィードを関連付けます。
これらは、プッシュとプルの2つの異なるソフトウェアアーキテクチャを利用しています。
XMLReaderは「プルパーサー」です。大きなループを作成し、read()関数を呼び出してカーソルを前方に移動する必要があります。このソフトウェアアーキテクチャは、直感的に理解しやすい傾向があります。
XMLParserは、イベントベースの「プッシュパーサー」です。start_element、end_element、character_data、start_namespace_declなどのイベントによってトリガーされるコールバック関数を登録する必要があります。xml_parse()を呼び出すと、Expatライブラリはコールバック関数を使用してXMLドキュメント全体を処理します。
プッシュアーキテクチャとプルアーキテクチャの微妙な違いを理解していない場合は、XMLReaderから始めることをお勧めします。これは、「プル」の方が理解しやすく、視覚化しやすいためです。
これについては専門家ではありませんが、PHP のドキュメントによると、XMLReader が適しているようです。「リーダーは、ドキュメント ストリームを進み、途中の各ノードで停止するカーソルとして機能します。」理論的には、これにより、特に大きなファイルでのメモリの問題/リークを防ぐことができます。
http://www.php.net/manual/en/intro.xmlreader.php
XMLParser は配列を返すため、より大きな xml ファイルではメモリの問題が発生する可能性があります。