11月 23, 2008 0

PHP XML_Unserializer で、XMLの属性を取得したい時

By in PHP, Programming

今扱っている案件で、XMLを読み込んで、ごにょごにょする機会があり、はまったことがあったので、メモとして残します。

PHPのXML読み込み実装の中でも、かなり使えるXML_Unserializerですが、以下のようなXMLを読み込んで、なおかつ、articleタグのtypeやidのような属性までも取得したい場合、オプションを設定する必要があることがわかりました。

<articles>
	 <article type="news" id="ID10001">
		 <title>記事1</title>
	 </article>
	 <article type="news" id="ID10002">
		 <title>記事2</title>
	 </article>
</articles>

やり方は、簡単で、XML_UnserializerのsetOptionメソッドで、parseAttributesをTrueに設定すれば良いだけでした (オプション一覧)。以下はPHP5の読み込みまでの例。

<?php
require_once("XML/Unserializer.php");

$xml = file_get_contents("sample.xml");
$obj = new XML_Unserializer();

$obj->setOption("parseAttributes", true);

$status  = $obj->unserialize($xml);
if ($status === true) {
    $dat = $obj->getUnserializedData();
	  print_r($dat);
}
?>

pear の XML_Serializer, XML_Unserializerは、未だにバージョンは beta のままですが、一度これに慣れてしまうと非常に便利で手放せないモジュールになると思います。

Tags:

Leave a Reply