PHP XML DOM 解析器
內建的 DOM 解析器使得 PHP 可以處理 XML 文件。
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 檔案 ("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 提醒 別忘了我這個週末!
如果您在瀏覽器視窗中選擇“檢視原始碼”,您將看到以下 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 物件,並將 "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 教程。