常用屬性速查
| 屬性 | 說明 |
documentElement | 根元素 (可讀寫) |
childNodes | 子節點列表 (唯讀) |
firstChild / lastChild | 首/尾子節點 |
nodeName / nodeValue | 節點名稱/文字內容 |
attributes | 屬性集合 |
ownerDocument | 所屬文件物件 |
常用方法速查
| 方法 | 用途 |
load($file) | 載入 XML 檔案 |
loadXML($string) | 載入 XML 字串 |
save($file) | 儲存至檔案 |
saveXML() | 輸出 XML 字串 |
createElement($name) | 建立元素節點 |
createTextNode($text) | 建立文字節點 |
createAttribute($name) | 建立屬性節點 |
getElementsByTagName($name) | 取得元素集合 |
appendChild($node) | 新增子節點 |
insertBefore($new, $ref) | 在參考節點前插入 |
實作範例:讀取 XML 並輸出內容
<?php
$xml = new DOMDocument();
$xml->load('me.xml');
$posts = $xml->getElementsByTagName('post');
foreach ($posts as $post) {
$title = $post->getElementsByTagName('title')->item(0);
$detail = $post->getElementsByTagName('details')->item(0);
// 取得 title 的 id 屬性
$id = $title->attributes->getNamedItem('id')->nodeValue;
echo "Id: $id<br>";
echo "Title: {$title->nodeValue}<br>";
echo "Details: {$detail->nodeValue}<br><br>";
}
?>
配合 XML 範例 (me.xml)
<?xml version="1.0" encoding="utf-8"?>
<phplamp>
<post>
<title id="1">PHP XML處理介紹一</title>
<details>詳細內容一</details>
</post>
<post>
<title id="2">PHP XML處理介紹二</title>
<details>詳細內容二</details>
</post>
</phplamp>
補充:JavaScript 端讀取 XML (AJAX 應用)
原文附有 IE 專用 ActiveXObject 寫法,現代前端請改用 fetch + DOMParser:
async function loadXML() {
const res = await fetch('word.xml');
const text = await res.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(text, 'application/xml');
// 後續操作 xmlDoc...
}