XML 是結構化數據交換的標準格式。PHP DOMDocument 提供強大的樹形 API,支持載入、查詢、創建、修改、輸出 XML。本文通過實戰代碼演示核心操作。
$doc = new DOMDocument();
$doc->load('books.xml');
$books = $doc->getElementsByTagName('book');
foreach ($books as $book) {
$author = $book->getElementsByTagName('author')->item(0)->nodeValue;
$publisher= $book->getElementsByTagName('publisher')->item(0)->nodeValue;
$title = $book->getElementsByTagName('title')->item(0)->nodeValue;
echo "$title - $author - $publisher\n";
}
關鍵點:getElementsByTagName 返回 DOMNodeList,item(0) 取首個節點,nodeValue 獲取文本內容。
$books = [
['title' => 'PHP Hacks', 'author' => 'Jack Herrington'],
];
$doc = new DOMDocument();
$doc->formatOutput = true; // 美化縮進
$root = $doc->createElement('books');
$doc->appendChild($root);
foreach ($books as $book) {
$b = $doc->createElement('book');
$author = $doc->createElement('author');
$author->appendChild($doc->createTextNode($book['author']));
$b->appendChild($author);
$title = $doc->createElement('title');
$title->appendChild($doc->createTextNode($book['title']));
$b->appendChild($title);
$root->appendChild($b);
}
echo $doc->saveXML(); // 或 $doc->save('books.xml') 寫文件
核心模式:createElement 創建節點 → createTextNode 創建文本 → appendChild 組裝父子關係 → saveXML/save 輸出。
createElementNS()、setAttributeNS()$xpath = new DOMXPath($doc); $nodes = $xpath->query('//book[@id=1]');libxml_use_internal_errors(true) 抑制警告,libxml_get_errors() 獲取錯誤詳情。XMLReader/XMLWriter 避免全量載入內存。掌握 DOMDocument,輕松應對 API 對接、配置文件、數據遷移等 XML 場景。