pearのXML_SerializerをsimpleXMLっぽく使う
<?php require_once("XML/Serializer.php"); header("Content-Type: text/xml; charset=utf-8"); $xml = array("item" => array("hoge","hoge","hoge")); //これがXMLにしたい配列だよ $param = array( XML_SERIALIZER_OPTION_INDENT => "\t", XML_SERIALIZER_OPTION_XML_ENCODING => 'UTF-8', XML_SERIALIZER_OPTION_XML_DECL_ENABLED => TRUE, XML_SERIALIZER_OPTION_ROOT_NAME => 'xml', XML_SERIALIZER_OPTION_ROOT_ATTRIBS => array('version' => '2.0','encoding' => 'UTF-8'), ); //いろんなオプションがあるんだ $serializer = new XML_Serializer($param); $serializer->serialize($this->xml); echo $serializer->getSerializedData(); ?>
- とすると
<xml encoding="UTF-8" version="2.0"> <item>hoge</item> <item>hoge</item> <item>hoge</item> </xml>
- っていうXMLを表示してくれる…とおもったら違った
<xml encoding="UTF-8" version="2.0"> <item> <XML_Serializer_Tag>hoge</XML_Serializer_Tag> <XML_Serializer_Tag>hoge</XML_Serializer_Tag> <XML_Serializer_Tag>hoge</XML_Serializer_Tag> </item> </xml>
XML_SERIALIZER_OPTION_DEFAULT_TAG => 'fuga',
- この一行を$paramの中に加えれば名前は変えられるけどスマートじゃないね
- serialize();するまえに
$serializer->setOption('mode','simplexml');
- この1行を入れてみると
<xml encoding="UTF-8" version="2.0"> <item>hoge</item> <item>hoge</item> <item>hoge</item> </xml>
- ちゃんと返してくれるようになった。やったね!
- XML_Serializerちょうべんり
*1:ほんとはオブジェクトでも大丈夫