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