PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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データを手軽に処理したい場合に非常に便利なので、ぜひ活用してみてください。

  1. JavaでJSON配列(JSONArray)をCSV形式に変換する方法を徹底解説

    JSONは軽量かつ言語に依存しないデータ交換フォーマットとして広く利用されています。JavaではJSONArrayクラスを使うことで、文字列として渡されたJSONテキストを解析し、java.util.Listインターフェースをサポートしたベクトル(リスト)状のオブジェクトとして扱えます。 JSON配列をCSV形式に変換するには、org.json.CDLクラスが便利です。このクラスが提供する静的メソッドtoString()を使用すると、JSONArrayをカンマ区切りのテキストに簡単に変換できます。また、変換したデータをCSVファイルとして保存する場合は、org.apache.commons.i

  2. ファイルを開かずにXMLをXLSXへ変換する方法|初心者向けステップ解説

    このチュートリアルでは、ファイルを開かずにXMLをXLSXへ変換する方法をご紹介します。XMLはマークアップ言語の一種で、主に他のマークアップ言語の定義に使用されるほか、データ転送や記録、ドキュメントのエンコード用フォーマットの作成にも広く活用されています。しかしながら、データの編集や第三者への表示といった用途では、XLSXファイルの方がはるかに扱いやすいのが実情です。そのため、ファイルを開くことなくXMLからXLSXへ変換できるスキルは、実務において非常に有用です。練習用ワークブックはこちらからダウンロードできます。ファイルを開かずにXMLをXLSXへ変換する手順ここでの目標は、XMLファイ