phpPHP開発 虎の巻

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');

カテゴリ:ネットの記事