現在の位置: ホーム> 最新記事一覧> XML_PARSEおよびDOMXML関数ライブラリを介してXMLデータを解析する方法

XML_PARSEおよびDOMXML関数ライブラリを介してXMLデータを解析する方法

M66 2025-05-12

最新のWebアプリケーション開発では、XML(拡張可能なマークアップ言語)はデータ交換形式の1つであり、多くのシナリオで依然として広く使用されています。 PHPは、XMLを処理するためのさまざまな関数ライブラリを提供します。その中には、 XML_PARSEDOMXMLが2つの一般的な解析方法であり、それぞれ異なるニーズに適しています。この記事では、これら2つの方法を個別に紹介し、実用的なコード例を提供して、XMLデータの解析スキルを効率的に習得するのに役立ちます。

1.イベントベースの解析にはXML_PARSEを使用します

XML_PARSEは、PHPのXMLパーサー機能であり、イベントベースの解析方法(Sax Parsingとも呼ばれます)に属します。 XMLデータを読み取るプロセス中に特定のコールバック関数をトリガーします。これは、ドキュメント全体をメモリにロードする必要がないため、大きなXMLファイルの処理に適しています。

サンプルコード:

 <?php
$xml_data = <<<XML
<books>
    <book>
        <title>PHP プログラミングの練習</title>
        <author>チャン・サン</author>
    </book>
    <book>
        <title>XML そして Web 仕える</title>
        <author>li si</author>
    </book>
</books>
XML;

$parser = xml_parser_create("UTF-8");

function startElement($parser, $name, $attrs) {
    echo "要素を開始します:$name\n";
}

function endElement($parser, $name) {
    echo "終了要素:$name\n";
}

function characterData($parser, $data) {
    $data = trim($data);
    if (!empty($data)) {
        echo "データ:$data\n";
    }
}

xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");

if (!xml_parse($parser, $xml_data, true)) {
    die("XML 解析エラー:" . xml_error_string(xml_get_error_code($parser)));
}

xml_parser_free($parser);
?>

出力結果:

 要素を開始します:BOOKS
要素を開始します:BOOK
要素を開始します:TITLE
データ:PHP プログラミングの練習
終了要素:TITLE
要素を開始します:AUTHOR
データ:チャン・サン
終了要素:AUTHOR
終了要素:BOOK
要素を開始します:BOOK
要素を開始します:TITLE
データ:XML そして Web 仕える
終了要素:TITLE
要素を開始します:AUTHOR
データ:li si
終了要素:AUTHOR
終了要素:BOOK
終了要素:BOOKS

利点と適用可能なシナリオ

  • 利点:速い解析速度と低メモリの使用量。

  • 該当するシナリオ:大規模なXMLファイルは、XMLコンテンツを変更せずに読み取る必要があります。

2。DOMXMLを使用して、ドキュメントオブジェクトモデル(DOM)に基づいて分析を実行します

DOMXMLは、XMLドキュメント全体をDOMツリーにロードすることにより、HTML DOMのようなXMLデータを操作できる、より構造化されたXML処理方法を提供します。

:PHP5以来、 DomxMLはDOM拡張機能(つまり、Domdocumentクラス)に置き換えられており、この記事では後者の例を採用しています。

サンプルコード:

 <?php
$xml_string = <<<XML
<books>
    <book>
        <title>PHP プログラミングの練習</title>
        <author>チャン・サン</author>
        <link>https://www.m66.net/book/php</link>
    </book>
    <book>
        <title>XML そして Web 仕える</title>
        <author>li si</author>
        <link>https://www.m66.net/book/xml</link>
    </book>
</books>
XML;

$doc = new DOMDocument();
$doc->loadXML($xml_string);

$books = $doc->getElementsByTagName("book");

foreach ($books as $book) {
    $title = $book->getElementsByTagName("title")->item(0)->nodeValue;
    $author = $book->getElementsByTagName("author")->item(0)->nodeValue;
    $link = $book->getElementsByTagName("link")->item(0)->nodeValue;

    echo "本のタイトル:$title\n";
    echo "著者:$author\n";
    echo "リンク:$link\n\n";
}
?>

出力結果:

 本のタイトル:PHP プログラミングの練習
著者:チャン・サン
リンク:https://www.m66.net/book/php

本のタイトル:XML そして Web 仕える
著者:li si
リンク:https://www.m66.net/book/xml

利点と適用可能なシナリオ

  • 利点:XMLの読み取り、変更、生成に適した、明確な構造と操作が簡単です。

  • 適用可能なシナリオ:中小規模のXMLファイル、構造の変更、または新しいドキュメントを作成する必要があります。