xmlドキュメントを連想配列へ変換する

notoです。

xmlドキュメントを連想配列へ変換する処理ですが、XMLパーサを作成するわけではなく、とても簡単に連想配列への変換は行うことができます。

変換対象のXMLの構造は以下のようになります。

blog.xml
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<blog>
    <name>codelife</name>
    <date>2011/12/15</date>
    <member>
        <name>noto</name>
        <name>chakemi</name>
        <name>iyama</name>
    </member>
</blog>

XMLを連想配列に変換

XMLドキュメントの量も多くはないので、simplexmlを利用します。 量が多い場合は、XMLReaderを利用したほうがパフォーマンスがいいと思います。

simplexml_load_fileで読み込んだXMLドキュメントはSimpleXMLElementオブジェクトとして返却されます。 SimpleXMLElementを連想配列に変換する方法はとても簡単で、一度json形式にエンコードを行い、デコードすることで配列への変換を実現することができます。

1
2
3
4
5
6
7
8
9
10
<?php

$url = 'blog.xml';

//xmlファイルを読み込み、配列へ変換
$xml = simplexml_load_file($url);
$arr = json_decode(json_encode($xml), true);

echo 'result:' . PHP_EOL;
echo var_dump($arr);

出力結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
result:
array(3) {
  ["name"]=>
  string(8) "codelife"
  ["date"]=>
  string(10) "2011/12/15"
  ["member"]=>
  array(1) {
    ["name"]=>
    array(3) {
      [0]=>
      string(4) "noto"
      [1]=>
      string(7) "chakemi"
      [2]=>
      string(5) "iyama"
    }
  }
}

さっくり変換できていいですね。

Comments