最新的Web開發教程
 

PHP XML DOM解析器


內置的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教程