PHP 內建 DOMDocument 類別提供標準化的 XML 操作介面。本文示範如何將陣列資料轉換為結構化的 XML 文件,並啟用格式化輸出,方便除錯與對接 API。
<?php
$books = [];
$books[] = [
'title' => 'PHP Hacks',
'author' => 'Jack Herrington',
'publisher' => "O'Reilly"
];
$books[] = [
'title' => 'Podcasting Hacks',
'author' => 'Jack Herrington',
'publisher' => "O'Reilly"
];
$doc = new DOMDocument();
$doc->formatOutput = true; // 產生縮排易讀的 XML
$root = $doc->createElement('books');
$doc->appendChild($root);
foreach ($books as $book) {
$bookElem = $doc->createElement('book');
$author = $doc->createElement('author');
$author->appendChild($doc->createTextNode($book['author']));
$bookElem->appendChild($author);
$title = $doc->createElement('title');
$title->appendChild($doc->createTextNode($book['title']));
$bookElem->appendChild($title);
$publisher = $doc->createElement('publisher');
$publisher->appendChild($doc->createTextNode($book['publisher']));
$bookElem->appendChild($publisher);
$root->appendChild($bookElem);
}
echo $doc->saveXML();
<?xml version="1.0"?>
<books>
<book>
<author>Jack Herrington</author>
<title>PHP Hacks</title>
<publisher>O'Reilly</publisher>
</book>
<book>
<author>Jack Herrington</author>
<title>Podcasting Hacks</title>
<publisher>O'Reilly</publisher>
</book>
</books>
formatOutput = true:輸出時自動縮排換行,預設為緊湊模式。createElement() 建立節點,createTextNode() 建立文字節點,再用 appendChild() 串接樹狀結構。&、<、>、引號)會自動轉義為實體,安全可靠。saveXML() 回傳字串;若需直接存檔可用 save('books.xml')。DOMXPath 進行查詢與修改。header('Content-Type: application/xml; charset=utf-8'); 供瀏覽器正確顯示。XMLWriter 串流模式,降低記憶體佔用。