PHP XMLDOMパーサー
組み込みのDOMパーサーを使用すると、PHPでXMLドキュメントを処理できます。
XMLDOMパーサー
DOMパーサーはツリーベースのパーサーです。
次のXMLドキュメントの一部を見てください。
<?xml version="1.0" encoding="UTF-8"?>
<from>Jani</from>
DOMは、上記のXMLをツリー構造と見なします。
- レベル1:XMLドキュメント
- レベル2:ルート要素:<from>
- レベル3:テキスト要素:「Jani」
インストール
DOMパーサー関数はPHPコアの一部です。これらの機能を使用するためにインストールは必要ありません。
XMLファイル
以下のXMLファイル( "note.xml")がこの例で使用されます。
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XMLのロードと出力
XMLパーサーを初期化し、xmlをロードして、出力します。
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>
上記のコードの出力は次のようになります。
Tove Jani Reminder Don't forget me this weekend!
ブラウザウィンドウで[ソースの表示]を選択すると、次のHTMLが表示されます。
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
上記の例では、DOMDocument-Objectを作成し、「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 = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =
上記の例では、各要素の間に空のテキストノードがあることがわかります。
XMLが生成されるとき、ノード間に空白が含まれることがよくあります。XML DOMパーサーは、これらを通常の要素として扱います。それらに気付いていない場合、問題が発生することがあります。
XML DOMについて詳しく知りたい場合は、 XMLチュートリアルにアクセスしてください。