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

phpでxmlファイルデータを読込んで出力してみます。

1.xmlファイルの例

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

<?xml version="1.0" encoding="UTF-8"?>
 	<list>
  <data seq="1" name="name01" cat="category01">
    <text>テキスト01</text>
    <url>https://dad-union.com/</url>
  </data>
  <data seq="2" name="name02" cat="category02">
    <text>テキスト02</text>
    <url>https://dad-union.com/</url>
  </data>
  <data seq="3" name="name03" cat="category03">
    <text>テキスト03</text>
    <url>https://dad-union.com/</url>
  </data>
  <data seq="4" name="name04" cat="category04">
    <text>テキスト04</text>
    <url>https://dad-union.com/</url>
  </data>
  <data seq="5" name="name05" cat="category05">
    <text>テキスト05</text>
    <url>https://dad-union.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."
";
		
		print $str_work;
}
?>

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

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