PHP で XML を配列に変換する

Subodh Poudel 2023年1月30日
  1. PHP で simplexml_load_string()json_encode()、および json_decode() 関数を使用して XML を配列に変換する
  2. PHP で simplexml_load_file() 関数を使用し、それを配列にタイプキャストして XML を配列に変換する
PHP で XML を配列に変換する

このチュートリアルでは、PHP で XML を配列に変換する方法を紹介します。

PHP で simplexml_load_string()json_encode()、および json_decode() 関数を使用して XML を配列に変換する

XML データは、一連の変換を使用して PHP 配列として表すことができます。

simplexml_load_string() 関数を使用して、XML 文字列をオブジェクトとして解釈できます。この関数は、最初のパラメーターとして XML 文字列を取ります。

2 番目のオプションとしてクラスを指定できます。この関数は、指定されたクラスのオブジェクトを返します。関数の 3 番目のパラメーターは、LIBXML 定数です。

次に、json_encode() 関数を使用してオブジェクトを JSON に変換する必要があります。最後の部分では、json_decode() 関数をパラメーターTRUE とともに使用して、JSON を配列に変換できます。

たとえば、次の XML データについて考えてみます。

<students>
 <bachelors>
 <name>Jack</name>
 <name>Hari</name>
 </bachelors>
 <masters>
 <name>Sia</name>
 <name>Paul</name>
 </masters>
</students>

変数 $xmlstr を作成し、すべての XML を文字列として変数に格納します。次に、別の変数 $XML を作成し、それに simplexml_load_string() 関数を割り当てます。

関数で、最初のパラメーターとして $xmlstr を設定し、クラスとして SimpleXMLElement を設定し、3 番目のパラメーターとして LIBXML_NOCDATA を設定します。次に、json_encode() 関数を使用して $XML を JSON に変換します。

次に、json_decode() 関数を使用して JSON を配列に変換します。json_decode() 関数の 2 番目のパラメーターとして TRUE を含めることを忘れないでください。最後に、配列を出力します。

ここで、LIBXML_NOCDATA 定数は文字データ(CDATA)をテキストノードとしてマージします。したがって、これらのさまざまな PHP 関数を使用して XML を PHP 配列に変換できます。

$xmlstr ='
<students>
 <bachelors>
 <name>Jack</name>
 <name>Hari</name>
 </bachelors>
 <masters>
 <name>Sia</name>
 <name>Paul</name>
 </masters>
</students>';
$XML = simplexml_load_string($xmlstr, "SimpleXMLElement", LIBXML_NOCDATA);
$json = json_encode($XML);
$arr = json_decode($json,TRUE);
print_r($arr);

出力:

Array ( [bachelors] => Array ( [name] => Array ( [0] => Jack [1] => Hari ) ) [masters] => Array ( [name] => Array ( [0] => Sia [1] => Paul ) ) ) 

PHP で simplexml_load_file() 関数を使用し、それを配列にタイプキャストして XML を配列に変換する

simplexml_load_file() 関数を使用して、XML をオブジェクトに解釈できます。次に、オブジェクトを型キャストして配列に変換できます。

この関数は、最初のパラメーターとして XML ファイルのパスを取ります。この関数は、simplexml_load_string() 関数とほぼ同じです。XML ファイルを作成し、そのパスを simplexml_load_file() 関数で使用できます。

たとえば、最初の方法で同じ XML ファイルを使用し、XML ファイルを file.xml として保存し、PHP で変数 $XML を作成できます。file.xml をパラメータとして、simplexml_load_file() を変数に割り当てます。

次に、$arr 変数を作成し、$XML 変数を配列にタイプキャストします。タイプキャストされた配列を $arr 変数に割り当てます。最後に、print_r() 関数を使用して $arr 変数を出力します。

このようにして、simplexml_load_file() 関数を使用して XML ファイルをロードし、それを配列に変換できます。

$XML = simplexml_load_file('file.xml');
$arr = (array)$XML;
print_r($arr);

出力:

Array ( [bachelors] => SimpleXMLElement Object ( [name] => Array ( [0] => Jack [1] => Hari ) ) [masters] => SimpleXMLElement Object ( [name] => Array ( [0] => Sia [1] => Paul ) ) ) 
著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

関連記事 - PHP XML

関連記事 - PHP Array