在 PHP 開發中,解析 XML 數據是常見需求。PHP 內建的 DOMDocument 類提供了強大且標準化的 XML 處理能力,特別適合處理帶有屬性的 XML 結構。本文將通過實際代碼示例,詳細講解如何讀取 XML 元素的屬性值。
<?php
// 初始化 DOMDocument 對象
$dom = new DOMDocument('1.0', 'UTF-8');
// 載入 XML 文件
$dom->load('data.xml');
// 獲取所有 <video> 元素
$items = $dom->getElementsByTagName('video');
// 直接讀取第一個元素的 img 屬性
echo $items->item(0)->getAttribute('img') . '<br/>';
// 遍歷所有元素並輸出所有屬性
foreach ($items as $video) {
foreach ($video->attributes as $attr) {
echo $attr->nodeName . ':' . $attr->nodeValue . '<br/>';
}
echo '--------------------<br/>';
}
?>
<?xml version="1.0" encoding="UTF-8"?>
<videos>
<video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/>
<video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/>
<video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/>
</videos>
loadXML() 載入字符串DOMNodeList 對象,包含所有匹配的元素DOMNamedNodeMap,可遍歷所有屬性若 XML 使用命名空間,需使用 getAttributeNS()。處理大文件時,考慮使用 XMLReader 進行流式解析以節省內存。此外,建議在生產環境中添加錯誤處理:
libxml_use_internal_errors(true);
$dom->load('data.xml');
$errors = libxml_get_errors();
if (!empty($errors)) {
// 處理解析錯誤
}
libxml_clear_errors();
DOMDocument 提供了符合 W3C 標準的 XML 操作接口,配合 getAttribute() 和 attributes 屬性,能夠高效、靈活地讀取 XML 元素屬性,是 PHP 處理 XML 數據的首選方案。