內置的DOM解析器能夠處理XML文檔中的PHP。
該XML DOM解析器
DOM解析器是基於樹的解析器。
請看下面的XML文檔部分:
<?xml version="1.0" encoding="UTF-8"?>
<from>Jani</from>
該DOM把上面的XML作為一個樹型結構:
- 等級1:XML文檔
- 等級2:根元素: <from>
- 等級3:文本元素: "Jani"
安裝
DOM解析器函數是PHP核心的一部分。 有沒有使用這些功能需要安裝。
XML文件
下面的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!
如果選擇"View source"在瀏覽器窗口中,你會看到下面的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 -對象並加載從XML "note.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教程 。