PHPによるXMLの操作
xmlの例
<?xml version="1.0" encoding="UTF-8"?> <library xmlns:dc="http://purl.org/dc/elements/1.1/"> <name>熊本市立図書館</name> <place> <zip>862-0971</zip> <adr>熊本県熊本市大江6-1-74</adr> </place> <link>http://www-library.kumamoto-kmm.ed.jp/</link> <books> <book no="1"> <title>坊ちゃん</title> <author>夏目漱石</author> <publish>講談社</publish> <dc:date>2005-03-10T00:20:06+09:00</dc:date> </book> <book no="2"> <title>草枕</title> <author>夏目漱石</author> <publish>講談社</publish> <dc:date>2005-02-16T00:00:06+09:00</dc:date> </book> <book no="3"> <title>蜘蛛の糸</title> <author>芥川龍之介</author> <publish>講談社</publish> <dc:date>2005-04-05T00:00:06+09:00</dc:date> </book> </books> </library>
simpleXML
simpleXMLとはPHPでXMLを簡単に使うためのライブラリ。標準で使用可能。
xmlの読み込み
$xml =simplexml_load_file(ファイル名);
ファイル名にはURLを指定可能。
内容の取得
echo $xml->name; // 熊本市立図書館 echo $xml->place->zip; // 862-0971
繰り返しでの取得
foreach ($xml->books->book as $book) { echo "<h2>" . $book->title . "</h2>"; echo "<p>" . $book->author . "</p>"; }
属性の取得
上の例のbookを使用
echo $book["no"];
または
echo $book->attributes()->no;
名前空間の取得
childrenを使い、その名前空間を取得する
foreach ($xml->books->book as $book) { $dc = $book->children('http://purl.org/dc/elements/1.1/'); echo $dc->date; }※日付を好きな書式にする場合 $date = new DateTime($dc->date); echo $date->format('Y/m/d H:i:s');