質問:
SimpleXML が処理できない大きな XML ファイルの場合, XMLReader を調べていますが、要素のコンテンツをデータベースに保存する方法に関するガイダンスがありません。このプロセスについての洞察を提供していただけますか?
回答:
アプローチは、特に個別の <製品> を扱う場合、作業単位のサイズによって異なります。 ;連続したノード。 XMLReader と SimpleXML を組み合わせた戦略は次のとおりです:
$z = new XMLReader; $z->open('data.xml'); $doc = new DOMDocument; // Move to the firstnode while ($z->read() && $z->name !== 'product'); // Iterate through nodes until the end of the tree while ($z->name === 'product') { // Either read outer XML as a string and import it as SimpleXML or import the node as DOM $node = new SimpleXMLElement($z->readOuterXML()); // $node = simplexml_import_dom($doc->importNode($z->expand(), true)); // Now you can access node content var_dump($node->element_1); // Move to the next node $z->next('product'); } さまざまなアプローチの長所と短所:
- XMLReader のみ: 高速、メモリ使用量は低いですが、コーディングが難しく、 debug.
- XMLReader SimpleXML: メモリ使用量が少なく、使いやすいですが、SimpleXMLElement オブジェクトの作成に比較的時間がかかることがあります。
- XMLReader DOM: メモリSimpleXML と同様の使用法で拡張が高速ですが、DOM 処理はより複雑になる可能性があります。
推奨事項:
パフォーマンスを評価するには、SimpleXML から始めます。速度が重要な場合は、DOM を検討してください。ただし、エラーやパフォーマンスの問題のリスクを軽減するには、コードベースを最小限に抑えることが重要です。
以上がPHP で XMLReader を効果的に使用して、大きな XML ファイル コンテンツをデータベースに保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。