PHP

【PHP】xmlファイルデータを読込んで出力【DOMDocument】

PHPのDOMDocumentを使用して、XMLファイルデータを読み込み、出力する方法についてご紹介します。
この記事では、初めてPHPやXMLに触れる方でも理解できるよう、基本から丁寧に説明していきます。XMLデータの操作方法に興味がある方にとって、役立つ情報を提供しますので、ぜひ最後までお読みください。

DOMDocumentとは

DOMDocumentは、PHPの標準ライブラリの一部であり、XMLファイルを扱う際に非常に便利なクラスです。DOM (Document Object Model) を利用して、XMLデータをツリー構造で管理し、各ノード(要素)にアクセスしたり、操作したりすることができます。

DOMDocumentは、XMLファイルを読み込むだけでなく、新しいXMLドキュメントを生成したり、既存のXMLデータを操作して出力したりすることが可能です。そのため、XMLを利用したデータ処理において、非常に重要な役割を果たします。

読み込むxmlファイル形式のデータ

今回は、以下のような形式の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>

 
このXMLファイルは、5つのデータ要素を持ち、それぞれにseq(シーケンス番号)、name(名前)、cat(カテゴリ)、text(テキスト)、およびurl(URL)の情報が含まれています。この形式のデータをPHPで読み込み、処理していきます。

PHPのDOMDocumentを使ってxmlファイルデータを読込んで出力するPHPの記述

次に、PHPでXMLファイルを読み込み、その内容を出力するコードを紹介します。このコードを実行するためには、サーバーにphp-domモジュールがインストールされている必要があります。通常、php-xmlモジュールに含まれているため、特別なインストール作業は必要ないことが多いです。

<?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;
}
?>

 
このコードでは、DOMDocumentクラスを使用して、data.xmlというファイルを読み込み、XMLの各要素にアクセスしています。ループを使ってdata要素ごとにシーケンス番号や名前、カテゴリ、テキスト、URLを取得し、それらを一行のテキストとして整形し、出力しています。

このサンプルコードを実際に実行すると、次のような形式でデータが出力されます。

1|name01|category01|テキスト01|https://dad-union.com/
2|name02|category02|テキスト02|https://dad-union.com/
3|name03|category03|テキスト03|https://dad-union.com/
4|name04|category04|テキスト04|https://dad-union.com/
5|name05|category05|テキスト05|https://dad-union.com/

 
このようにして、XMLデータをPHPで簡単に操作し、出力することができます。

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

今回紹介したコードの実行結果を実際に確認したい方のために、デモページを用意しています。以下のリンクからアクセスしてみてください。

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

デモページでは、XMLデータが正しく読み込まれ、出力されていることを確認できます。また、コードを自身の環境で実行することで、同様の結果が得られるか試してみることも可能です。

まとめ

PHPのDOMDocumentクラスを使用して、XMLファイルを読み込み、データを操作・出力する方法について解説しました。XMLはデータのやり取りや保存に広く使用されており、その処理方法を理解しておくことは、エンジニアにとって非常に有用です。

この方法は、XMLファイルがシンプルな場合に特に効果的ですが、データ量が多い場合や複雑な構造を持つ場合は、データベースを使用した方が効率的な場合もあります。しかし、まずは基本的なXML操作を理解し、応用できるようになることが大切です。

この記事が、皆さんのXMLファイルの処理に役立つことを願っています。今後も技術ブログを通じて、幅広いエンジニアの方々に役立つ情報を発信していきますので、ぜひ引き続きご覧ください。

 
※流用される場合は自己責任でお願いします。
 デモページheadタグ内のGoogleアナリティクスタグは流用しないで下さい。