<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.plastik.jp &#187; PHP XML</title>
	<atom:link href="http://blog.plastik.jp/archives/tag/php-xml/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.plastik.jp</link>
	<description>PHP, MySQL, MT, WordPressなどWeb系を中心に活動するエンジニア</description>
	<lastBuildDate>Fri, 27 Aug 2010 13:00:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP XML_Unserializer で、XMLの属性を取得したい時</title>
		<link>http://blog.plastik.jp/archives/176</link>
		<comments>http://blog.plastik.jp/archives/176#comments</comments>
		<pubDate>Sun, 23 Nov 2008 08:32:45 +0000</pubDate>
		<dc:creator>plastik</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[PHP XML]]></category>

		<guid isPermaLink="false">http://blog.plastik.jp/?p=176</guid>
		<description><![CDATA[今扱っている案件で、XMLを読み込んで、ごにょごにょする機会があり、はまったことがあったので、メモとして残します。
PHPのXML読み込み実装の中でも、かなり使えるXML_Unserializerですが、以下のようなXMLを読み込んで、なおかつ、articleタグのtypeやidのような属性までも取得したい場合、オプションを設定する必要があることがわかりました。
&#60;articles&#62;
	 &#60;article type="news" id="ID10001"&#62;
		 &#60;title&#62;記事1&#60;/title&#62;
	 &#60;/article&#62;
	 &#60;article type="news" id="ID10002"&#62;
		 &#60;title&#62;記事2&#60;/title&#62;
	 &#60;/article&#62;
&#60;/articles&#62;
やり方は、簡単で、XML_UnserializerのsetOptionメソッドで、parseAttributesをTrueに設定すれば良いだけでした (オプション一覧)。以下はPHP5の読み込みまでの例。
&#60;?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);
}
?&#62;

pear の XML_Serializer, XML_Unserializerは、未だにバージョンは beta のままですが、一度これに慣れてしまうと非常に便利で手放せないモジュールになると思います。
]]></description>
			<content:encoded><![CDATA[<p>今扱っている案件で、XMLを読み込んで、ごにょごにょする機会があり、はまったことがあったので、メモとして残します。</p>
<p>PHPのXML読み込み実装の中でも、かなり使える<a href="http://pear.php.net/manual/ja/package.xml.xml-serializer.php">XML_Unserializer</a>ですが、以下のようなXMLを読み込んで、なおかつ、articleタグのtypeやidのような属性までも取得したい場合、オプションを設定する必要があることがわかりました。</p>
<pre>&lt;articles&gt;
	 &lt;article type="news" id="ID10001"&gt;
		 &lt;title&gt;記事1&lt;/title&gt;
	 &lt;/article&gt;
	 &lt;article type="news" id="ID10002"&gt;
		 &lt;title&gt;記事2&lt;/title&gt;
	 &lt;/article&gt;
&lt;/articles&gt;</pre>
<p>やり方は、簡単で、XML_UnserializerのsetOptionメソッドで、parseAttributesをTrueに設定すれば良いだけでした (<a href="http://pear.php.net/manual/ja/package.xml.xml-serializer.xml-unserializer.options.php">オプション一覧</a>)。以下はPHP5の読み込みまでの例。</p>
<pre>&lt;?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);
}
?&gt;
</pre>
<p>pear の XML_Serializer, XML_Unserializerは、未だにバージョンは beta のままですが、一度これに慣れてしまうと非常に便利で手放せないモジュールになると思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.plastik.jp/archives/176/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
