ホームページ > バックエンド開発 > PHPチュートリアル > XMLReader と SimpleXML を使用して PHP で大きな XML ファイルを効率的に解析する方法

XMLReader と SimpleXML を使用して PHP で大きな XML ファイルを効率的に解析する方法

Mary-Kate Olsen
リリース: 2024-12-26 10:31:10
オリジナル
167 人が閲覧しました

How to Efficiently Parse Large XML Files in PHP Using XMLReader and SimpleXML?

PHP で XMLReader を効果的に利用する方法

PHP では、SimpleXML を使用して大きな XML ドキュメントを解析しようとすると、問題が発生する場合があります。これに対処するには、XMLReader が代替手段として機能します。ただし、その使用法に関する包括的なチュートリアルを見つけるのは難しい場合があります。

XMLReader を利用して個々の要素のコンテンツを効率的に取得し、データベースに保存する方法を見てみましょう。

XML の例構造

<products>
    <last_updated>2009-11-30 13:52:40</last_updated>
    <product>
        <element_1>foo</element_1>
        <element_2>foo</element_2>
        <element_3>foo</element_3>
        <element_4>foo</element_4>
    </product>
    <product>
        <element_1>bar</element_1>
        <element_2>bar</element_2>
        <element_3>bar</element_3>
        <element_4>bar</element_4>
    </product>
</products>
ログイン後にコピー

XMLReader とSimpleXML

目標は、各 を処理することです。ノードを連続して実行します。これを実現するには:

  1. XMLReader インスタンスを作成し、XML ファイルを開きます。
  2. XMLReader を使用して、最初の に移動します。
  3. 現在のノードが である間、そのコンテンツを XML 文字列として読み取ります。
  4. XML 文字列を SimpleXMLElement オブジェクトにインポートします。
  5. 値を抽出します
  6. 次の に移動します。
  7. すべての ノードが見つかるまで手順 4 ~ 6 を繰り返します。

PHP での実装

$z = new XMLReader;
$z->open('data.xml');

$doc = new DOMDocument;

// Move to the first <product> node
while ($z->read() && $z->name !== 'product');

// Loop through <product> nodes
while ($z->name === 'product') {
    // Import XML string into SimpleXMLElement object
    $node = new SimpleXMLElement($z->readOuterXML());

    // Get values of element nodes
    var_dump($node->element_1);

    // Move to next <product> node
    $z->next('product');
}
ログイン後にコピー

さまざまなノードのメリットとデメリットアプローチ

  • XMLReader のみ:

    • 利点: 高速、メモリ効率。
    • 欠点:書くのが複雑で、 debug.
  • XMLReader SimpleXML:

    • 利点: 優れたパフォーマンス、使いやすい SimpleXML。
    • 欠点: SimpleXMLElement オブジェクトの作成は比較的簡単です。遅い。
  • XMLReader DOM:

    • 利点: SimpleXML と同等のメモリ使用量であり、SimpleXMLElement オブジェクトを作成するより高速です。
    • 欠点: DOM を使用すると、次のような問題が発生する可能性があります。不便です。

推奨事項

ほとんどの状況では、XMLReader と SimpleXML を使用することが理想的な選択です。パフォーマンスと使いやすさのバランスが取れています。どうしても必要な場合を除き、XMLReader を直接使用しないでください。

以上がXMLReader と SimpleXML を使用して PHP で大きな XML ファイルを効率的に解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート