2007.09.21

phpでXMLを扱う

最近、phpでXMLを扱うことがあり、
PEARのライブラリのXML_Serializerを使用しました。
このライブラリを使用することにより、XMLを簡単に扱うことができ、
XMLから配列に変換したり、逆に配列からXMLに変換することも可能になります。

$xmlarray = array(
        'Table' => array(
              'Record' => array(
                        array(
                           'Code' => '123'
                          ,'Name' => 'あああ'
                        ),
                        array(
                           'Code' => '456'
                          ,'Name' => 'いいい'
                       )
                     )
              )
      );

このような配列があった場合に、XML_Serializerを使用することでXMLに変換することが出来ます。

$serializer = new XML_Serializer();
$serializer->setOption('mode','simplexml');
$serializer->serialize($xmlarray);
$xml = $serializer->getSerializedData();
echo $xml;

出力結果は以下のようなXMLになります。

<Table>
  <Record>
    <Code>123</Code>
    <Name>あああ</Name>
  </Record>
  <Record>
    <Code>456</Code>
    <Name>いいい</Name>
  </Record>
</Table>

逆にXMLから配列に変換するためにはXML_Unserializerを使用します。
XML_UnserializerはXML_Serializerのライブラリに含まれています。

上記のようなXMLの文字列が格納された$xmlという変数があったとします。

$unserializer = new XML_Unserializer();
$unserializer->setOption('parseAttributes',true);
$unserializer->unserialize($xml);
$data = $unserializer->getUnserializedData();

これによりXMLから以下の構造の配列を取得できます。

Array(
  [Record] => Array(
        [0] => Array(
            [Code] => 123
            [Name] => あああ
            )
        [1] => Array(
            [Code] => 456
            [Name] => いいい
            )
        )
  )

phpでXMLを扱う時には、ぜひ使ってみて下さい。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
osano