ホームページ >バックエンド開発 >PHPの問題 >PHPでXMLを配列に変換する方法

PHPでXMLを配列に変換する方法

PHPz
PHPzオリジナル
2023-04-20 10:11:08553ブラウズ

PHP はスクリプト言語として、オブジェクト指向プログラミングと関数型プログラミングの特徴を備えています。 PHP は Web 開発の分野で広く使用されています。 XML データ処理の観点から、PHP は多くの便利な関数とメソッドも提供します。この記事では、PHP を使用して XML 文字列を配列に変換する方法を紹介します。

まず、PHP DOM 拡張機能をインストールする必要があります。 DOM 拡張機能は、XML ドキュメントをオブジェクト指向で処理する拡張機能であり、その DOMDocument クラスを使用して XML を処理できます。特定のインストール プロセスについては、公式 PHP ドキュメントを参照してください。ここでは繰り返しません。

次に、XML 文字列を DOM オブジェクトに変換する必要があります。ここでは 2 つのメソッドが提供されています。1 つは、loadXML() メソッドを通じて XML 文字列を DOM オブジェクトにロードする方法であり、もう 1 つは、load() メソッドを通じて XML ファイルを DOM オブジェクトにロードするものです。ここでは、loadXML() メソッドを使用して XML 文字列をロードする方法を示します:

$xml_string = '<root><person><name>John</name><age>30</age></person><person><name>Mary</name><age>28</age></person></root>';
$dom = new DOMDocument();
$dom->loadXML($xml_string);

このようにして、XML 文字列を DOM オブジェクトに変換します。次に、DOM オブジェクトを配列に変換する必要があります。 DOM オブジェクトには、XML ドキュメントを処理するための便利な関数とメソッドがいくつかあり、最も一般的に使用されるのは getElementsByTagName() メソッドと getAttribute() メソッドです。 XML のデータ構造はツリー構造であるため、これらのメソッドは XML ドキュメントを走査するのに役立ちます。

再帰関数を使用して DOM オブジェクトを配列に変換できます:

function dom2array($node) {
    $array = array();
    if($node->hasAttributes()) {
        foreach($node->attributes as $attr) {
            $array[$attr->nodeName] = $attr->nodeValue;
        }
    }
    if($node->hasChildNodes()) {
        foreach($node->childNodes as $child) {
            if($child->nodeType == XML_TEXT_NODE) {
                $array['_value'] = $child->nodeValue;
                continue;
            }

            $name = $child->nodeName;
            if(!isset($array[$name])) {
                $array[$name] = dom2array($child);
            } else {
                if(!is_array($array[$name])) {
                    $array[$name] = array($array[$name]);
                }
                $array[$name][] = dom2array($child);
            }
        }
    }
    return $array;
}

$xml_array = dom2array($dom->documentElement);
print_r($xml_array);

この関数は、ノード名を配列のキーとして使用して、すべてのノードを再帰的に走査します。同じ名前のノードを追加し、配列モードで保存します。上記のコードにより、次の出力が得られます。

Array
(
    [person] => Array
        (
            [0] => Array
                (
                    [name] => John
                    [age] => 30
                )
            [1] => Array
                (
                    [name] => Mary
                    [age] => 28
                )
        )
)

ご覧のとおり、XML 文字列が配列に正常に変換されました。このようにして、XML データを簡単に処理できるほか、開発中に PHP を使用して XML データをより効率的に処理することもできます。

以上がPHPでXMLを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。