PHP XML DOM

内蔵の DOM 解析器により、PHP で XML 文書を処理することが可能になります。

DOM とは何ですか?

W3C DOM は HTML と XML 文書のための標準のオブジェクトセットを提供し、これらの文書にアクセスおよび操作するための標準インターフェースを提供します。

W3C DOM は異なる部分 (Core, XML, HTML) と異なるレベル (DOM Level 1/2/3) に分類されます:

  • Core DOM - あらゆる構造化文書のための標準のオブジェクトセット
  • XML DOM - XML 文書のための標準のオブジェクトセット
  • HTML DOM - HTML 文書のための標準のオブジェクトセット

XML DOM に関するより多くの知識を学びたい場合は、以下の XML DOM チュートリアル

XML 解析

XML 文書を読み取り、更新するために - 文書を作成し、処理するために、XML 解析器が必要です。

基本的な XML 解析器のタイプは二種類あります:

  • 木構造ベースの解析器:この解析器は XML 文書を木構造に変換します。全体の文書を分析し、ドキュメントオブジェクトモデル (DOM) などの要素にアクセスするための API を提供します。
  • イベントベースの解析器:XML 文書を一連のイベントとして視覚化します。特定のイベントが発生すると、解析器は関数を呼び出して処理します。

DOM 解析器は木構造に基づく解析器です。

以下の XML 文書の一部を見てください:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>ジョン</from>

XML DOM は XML を木構造として視覚化します:

  • レベル 1: XML 文書
  • レベル 2: タグの根: <from>
  • レベル 3: テキスト要素: "ジョン"

インストール

DOM XML 解析器関数は PHP のコアの一部です。インストールせずに使用できます。

XML ファイル

以下の XML ファイルを使用して例を示します:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>ジョージ</to>
<from>ジョン</from>
<heading>リマインダー</heading>
<body>会議を忘れないでください!</body>
</note>

XMLの読み込みと表示

XML 解析器を初期化し、XMLを読み込み、それを表示する必要があります:

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>

上記のコードの出力:

ジョージ ジョン リマインダー 会議を忘れないでください!

ブラウザのウィンドウでソースコードを確認すると、以下のような HTML を見つけることができます:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>ジョージ</to>
<from>ジョン</from>
<heading>リマインダー</heading>
<body>会議を忘れないでください!</body>
</note>

上記の例では、DOMDocumentオブジェクトを作成し、「note.xml」のXMLをこのドキュメントオブジェクトに読み込んでいます。

saveXML() ファンクションは、内部XMLドキュメントを文字列に格納し、それを表示するようにします。

XMLをループ

XML解析器を初期化し、XMLをロードし、<note>要素のすべての要素をループで処理する方法を示します:

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
  {
  print $item->nodeName . " = " . $item->nodeValue . "<br />";
  }
?>

上記のコードの出力:

#text = 
to = George
#text = 
from = John
#text = 
heading = リマインダー
#text = 
body = 会議を忘れないで!
#text =

上記の例では、各要素間に空のテキストノードがあることが見られます。

XMLが生成される際には、通常、節間にスペースが含まれています。XML DOM パーサーはそれらを通常の要素として処理し、注意を払わない場合、問題が発生することがあります。

XML DOM に関するより多くの知識を学びたい場合は、以下の XML DOM チュートリアル