PHP で巨大な XML ファイルを簡単に解析する
大きな XML ファイルを解析すると、メモリの制約により課題が生じます。この記事では、PHP で大量の XML ファイルを効率的に処理するためのソリューションについて説明します。
ストリーミング XML API の利用
PHP は、expat と XMLreader という 2 つのストリーミング XML API を提供します。これらの API は XML コンテンツをストリーミング形式で処理し、ツリー全体のロードに伴うメモリ オーバーヘッドを回避します。
Expat はレガシー API であり、解析プロセスの手動処理がさらに必要になります。一方、XMLreader は、よりオブジェクト指向のアプローチを提供し、多くの一般的な解析タスクを処理します。
大規模な DMOZ XML ファイル用のサンプル パーサー
使用方法をデモンストレーションするにはストリーミング XML パーサーの例として、DMOZ コンテンツ/構造 XML ファイルについて考えてみましょう。次の PHP クラスは、XMLreader を使用して、これらの大きなファイルを効率的に解析します。
class SimpleDMOZParser { private $stack = array(); private $file; private $parser; private $currentId; private $current; public function __construct($file) { $this->file = $file; $this->parser = xml_parser_create("UTF-8"); xml_set_object($this->parser, $this); xml_set_element_handler($this->parser, "startTag", "endTag"); } public function startTag($parser, $name, $attribs) { // ... } public function endTag($parser, $name) { // ... } public function parse() { // ... } } $parser = new SimpleDMOZParser("content.rdf.u8"); $parser->parse();
このクラスは、XML ファイルのチャンクを繰り返し読み取り、要素が検出されるとコンテンツを処理します。現在のコンテキストを追跡し、「LINK」要素から関連データを抽出するなどの特定のアクションを処理します。
以上がPHP はメモリの問題を発生させずに巨大な XML ファイルを効率的に解析するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。