PHPでXMLファイルを配列に変換する方法を5ステップで解説
XMLドキュメントをPHPの配列に変換するには、いくつかのPHP標準関数を組み合わせて使用します。本記事では、実際のサンプルコードを交えながら、その手順をわかりやすく段階的に解説します。
全体の流れ
変換の基本的な流れは以下の通りです。
XMLファイルを読み込む → 文字列をオブジェクトに変換 → JSON形式にエンコード → 配列にデコード
ステップ1:変換元のXMLファイルを用意する
まず、配列へ変換したいXMLファイルを作成します。ここでは例として「abc.xml」というファイルを使用します。
abc.xml
<?xml version='1.0'?>
<userdb>
<firstname name='Alex'>
<symbol>AL</symbol>
<code>A</code>
</firstname>
<firstname name='Sandra'>
<symbol>SA</symbol>
<code>S</code>
</firstname>
</userdb>ステップ2:file_get_contents()でXMLファイルを読み込む
次に、file_get_contents() 関数を使ってXMLファイルを読み込みます。この関数はファイル全体を文字列として取得し、変数に格納することができます。
ステップ3:simplexml_load_string()でオブジェクトに変換する
読み込んだ文字列は、PHPの組み込み関数 simplexml_load_string() を使うことで、SimpleXMLElementオブジェクトへと簡単に変換できます。これにより、XMLの各要素にプログラムからアクセスできるようになります。
ステップ4:json_encode()でJSON形式にエンコードする
続いて、json_encode() 関数を使用して、オブジェクトをJSONエンコードされた文字列に変換します。オブジェクトのままでは扱いにくいデータも、JSON文字列を経由すると後続の処理が容易になります。
ステップ5:json_decode()で配列に変換する
最後に、json_decode() 関数でJSON文字列をデコードします。第2引数に true を指定することで、結果が連想配列として返されます。
サンプルコード(完全版)
以上の手順をすべてまとめたコードがこちらです。
<?php // XMLファイルのパス $path = "abc.xml"; // ファイル全体を文字列として読み込む $xmlfile = file_get_contents($path); // 文字列をSimpleXMLElementオブジェクトに変換 $new = simplexml_load_string($xmlfile); // オブジェクトをJSON文字列にエンコード $jsonfile = json_encode($new); // JSON文字列を連想配列にデコード $myarray = json_decode($jsonfile, true); // 結果を出力 print_r($myarray); ?>
実行結果の出力例
上記のコードを実行すると、XMLの内容が次のような連想配列として出力されます。
Array
(
[firstname] => Array
(
[0] => Array
(
[@attributes] => Array
(
[name] => Alex
)
[symbol] => AL
[code] => A
)
[1] => Array
(
[@attributes] => Array
(
[name] => Sandra
)
[symbol] => SA
[code] => S
)
)
)補足:属性値の扱いについて
XML内の属性(name='Alex' など)は、配列変換時に @attributes というキーで格納される点に注意してください。属性値にアクセスしたい場合は、$myarray['firstname'][0]['@attributes']['name'] のように参照します。
まとめ
PHPでXMLを配列に変換するには、「file_get_contents() → simplexml_load_string() → json_encode() → json_decode()」という4つの関数を順に使うのが最もシンプルな方法です。少量〜中規模のXMLデータを手軽に処理したい場合に非常に便利なので、ぜひ活用してみてください。
-
JavaでJSON配列(JSONArray)をCSV形式に変換する方法を徹底解説
JSONは軽量かつ言語に依存しないデータ交換フォーマットとして広く利用されています。JavaではJSONArrayクラスを使うことで、文字列として渡されたJSONテキストを解析し、java.util.Listインターフェースをサポートしたベクトル(リスト)状のオブジェクトとして扱えます。 JSON配列をCSV形式に変換するには、org.json.CDLクラスが便利です。このクラスが提供する静的メソッドtoString()を使用すると、JSONArrayをカンマ区切りのテキストに簡単に変換できます。また、変換したデータをCSVファイルとして保存する場合は、org.apache.commons.i
-
ファイルを開かずにXMLをXLSXへ変換する方法|初心者向けステップ解説
このチュートリアルでは、ファイルを開かずにXMLをXLSXへ変換する方法をご紹介します。XMLはマークアップ言語の一種で、主に他のマークアップ言語の定義に使用されるほか、データ転送や記録、ドキュメントのエンコード用フォーマットの作成にも広く活用されています。しかしながら、データの編集や第三者への表示といった用途では、XLSXファイルの方がはるかに扱いやすいのが実情です。そのため、ファイルを開くことなくXMLからXLSXへ変換できるスキルは、実務において非常に有用です。練習用ワークブックはこちらからダウンロードできます。ファイルを開かずにXMLをXLSXへ変換する手順ここでの目標は、XMLファイ