DOMDocument:xmlファイルデータを読込んで出力するphp



以前、JavaScriptでの方法AJAXによるXMLファイルの読込み記述例とWEB制作あるあるをご紹介しましたが、
今回はphpで読込む方法をご紹介します。

1.xmlファイルの例

(今回はdata.xmlを読込んで出力します)

<?xml version="1.0" encoding="UTF-8"?>
<list>
  <data seq="1" name="name01" cat="category01">
    <text>テキスト01</text>
    <url>http://www.blinderhidden.com/</url>
  </data>
  <data seq="2" name="name02" cat="category02">
    <text>テキスト02</text>
    <url>http://www.blinderhidden.com/</url>
  </data>
  <data seq="3" name="name03" cat="category03">
    <text>テキスト03</text>
    <url>http://www.blinderhidden.com/</url>
  </data>
  <data seq="4" name="name04" cat="category04">
    <text>テキスト04</text>
    <url>http://www.blinderhidden.com/</url>
  </data>
  <data seq="5" name="name05" cat="category05">
    <text>テキスト05</text>
    <url>http://www.blinderhidden.com/</url>
  </data>
</list>

 

2.phpの記述

サーバーにphp-domモジュールがインストールされている必要があります。
php-xmlモジュールにがインスコされてればdomも入ってるとおもいます。

<?php
$doc = new DOMDocument();
$doc->formatOutput = TRUE;
$doc->preserveWhiteSpace=FALSE;
$doc->load('data.xml');	//xmlファイル読込み
$data = $doc->documentElement;
$list = $doc->getElementsByTagName('data');

//以下ループでxmlファイル内のタグや属性を読込み
for($j=0; $j<$list->length; $j++){
		$seq = urldecode($list->item($j)->getAttribute("seq"));
		$name = $list->item($j)->getAttribute("name");
		$cat = $list->item($j)->getAttribute("cat");
		$text_list = $list->item($j)->getElementsByTagName('text');
		$text = urldecode(nl2br($text_list->item(0)->nodeValue));
		$url_list = $list->item($j)->getElementsByTagName('url');
		$url = urldecode($url_list->item(0)->nodeValue);

		$str_work = $seq."|".$name."|".$cat."|".$text."|".$url."<br>";
		
		print $str_work;
}
?>

 
xmlファイルデータを読込んで出力するphpのデモ
 

xmlファイルのデータ量や持たせ方が複雑になってきそうな時はDBにデータを蓄積して
そこからデータ取得して出力させた方が良いのでしょうが、
どこまでがxmlでどこからがDBにした方が良いかよく迷います。