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

XML+ を php+ 配列に変換する方法

DDD
DDDオリジナル
2023-06-02 11:54:19890ブラウズ

xml を PHP 配列に変換する方法: 1. 構文 "simplexml_load_string()" を使用して XML 文字列を SimpleXmlElement オブジェクトに変換します; 2. 構文 "json_decode()" を使用して SimpleXmlElement オブジェクトをPHP 配列; 3. 構文 "foreach()" を使用して item 要素をループします; 4. 構文 "getDocNamespaces()" を使用して XML 文字列名前空間を処理します。

XML+ を php+ 配列に変換する方法

このチュートリアルの動作環境: Windows 10 システム、PHP バージョン 8.1.3、dell g3 コンピューター

PHP は非常に人気のあるプログラミングです。 language を使用すると、文字列や配列などの変数型を簡単に処理できます。 PHP では、XML 文字列をデータ ソースとして使用し、それを配列に変換して処理できます。

xml を php 配列に変換する方法:

1. XML 文字列を SimpleXmlElement オブジェクトに変換します

PHP では、まず XML 文字列を SimpleXmlElement オブジェクトに変換する必要があります。これを行うには、PHP の組み込み関数 simplexml_load_string() を使用できます。以下に例を示します。

$xml_string = &#39;<root><item><name>PHP</name><year>1995</year></item><item>
<name>MySQL</name><year>1995</year></item></root>&#39;;
$xml = simplexml_load_string($xml_string);

ここで、$xml_string は、SimpleXmlElement オブジェクトに変換される XML 文字列です。 simplexml_load_string() は、XML 文字列を SimpleXmlElement オブジェクトに変換し、それを変数 $xml に割り当てます。

2. SimpleXmlElement オブジェクトを PHP 配列に変換する

次に、SimpleXmlElement オブジェクトを PHP 配列に変換する必要があります。これは、PHP 組み込み関数 json_decode() を使用して実現できます。ただし、変換前に SimpleXmlElement オブジェクトを JSON 文字列に変換する必要があることに注意してください。次に例を示します。

$xml_string = &#39;<root><item><name>PHP</name><year>1995</year></item><item>
<name>MySQL</name><year>1995</year></item></root>&#39;;
$xml = simplexml_load_string($xml_string);

$json = json_encode($xml);
$array = json_decode($json,TRUE);

上記の例では、simplexml_load_string() は XML 文字列を SimpleXmlElement オブジェクトに変換し、次に json_encode() を使用して SimpleXmlElement オブジェクトを JSON 文字列に変換します。最後に json_decode() を使用して JSON 文字列を PHP 配列に変換します。

3. XML 文字列内の属性の処理

XML 文字列に属性が含まれている場合は、SimpleXmlElement オブジェクトのプロパティを使用してこれらの属性にアクセスする必要があります。以下に例を示します。

$xml_string = &#39;<root><item name="PHP" year="1995"/><item name="MySQL" year="1995"/>
</root>&#39;;
$xml = simplexml_load_string($xml_string);
 
$array = array();
foreach($xml->item as $item) {
    $array[] = array(
        &#39;name&#39; => (string)$item[&#39;name&#39;],
        &#39;year&#39; => (int)$item[&#39;year&#39;]
    );
}

この例では、$xml_string には 2 つの item 要素が含まれており、各要素には 2 つの属性 (名前と年) があります。 XML 文字列を SimpleXmlElement オブジェクトに変換した後、foreach() を使用して各 item 要素を反復処理し、$item['name'] および $item['year'] を使用して各要素のプロパティにアクセスできます。

プロパティの文字列と整数への変換はキャストによって行われることに注意してください。

4. XML 文字列内の名前空間の処理

XML 文字列で名前空間が使用されている場合、SimpleXmlElement オブジェクトの名前空間メソッドを使用してこれらの要素にアクセスする必要があります。以下に例を示します。

$xml_string = &#39;<root xmlns="http://www.example.com"><item><name>PHP</name>
<year>1995</year></item><item><name>MySQL</name><year>1995</year></item></root>&#39;;
$xml = simplexml_load_string($xml_string);
 
$namespaces = $xml->getDocNamespaces();
$xml->registerXPathNamespace(&#39;ns&#39;, $namespaces[&#39;&#39;]);
 
$items = $xml->xpath(&#39;//ns:item&#39;);
$array = array();
foreach($items as $item) {
    $array[] = array(
        &#39;name&#39; => (string)$item->name,
        &#39;year&#39; => (int)$item->year
    );
}

上の例では、$xml_string に 2 つの item 要素が含まれており、名前空間「http://www.example.com」を定義しています。まず、getDocNamespaces() メソッドを使用して XML 内のすべての名前空間を取得し、次に registerXPathNamespace() メソッドを使用して名前空間の接頭辞「ns」を提供します。

xpath() メソッドを使用して、XML ドキュメント内の名前空間「ns」を持つすべての item 要素を検索します。次に、foreach() を使用して各要素をループし、$item->name と $item->year を使用してそれらの値にアクセスします。

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

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