PHP で XML を配列に変換する
-
PHP で
simplexml_load_string()
、json_encode()
、およびjson_decode()
関数を使用して XML を配列に変換する -
PHP で
simplexml_load_file()
関数を使用し、それを配列にタイプキャストして 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 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