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のDOMDocumentクラスを使用して、XMLファイルを読み込み、データを操作・出力する方法について解説しました。XMLはデータのやり取りや保存に広く使用されており、その処理方法を理解しておくことは、エンジニアにとって非常に有用です。
この方法は、XMLファイルがシンプルな場合に特に効果的ですが、データ量が多い場合や複雑な構造を持つ場合は、データベースを使用した方が効率的な場合もあります。しかし、まずは基本的なXML操作を理解し、応用できるようになることが大切です。
この記事が、皆さんのXMLファイルの処理に役立つことを願っています。今後も技術ブログを通じて、幅広いエンジニアの方々に役立つ情報を発信していきますので、ぜひ引き続きご覧ください。
※流用される場合は自己責任でお願いします。
デモページheadタグ内のGoogleアナリティクスタグは流用しないで下さい。