首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 入門

PHP SimpleXML 完整教學:XML 解析與操作

     編輯:PHP 入門

PHP SimpleXML 完整教學:XML 解析與操作


簡介

SimpleXML 是 PHP 5 引入的擴展,提供極簡單的方式讀取 XML 元素名稱與文字內容。它將 XML 文檔/字串轉換為 SimpleXMLElement 物件:

  • 元素 → 物件屬性 (同層多個同名元素自動成陣列)
  • 屬性 → 關聯陣列存取 (索引為屬性名)
  • 文字節點 → 字串 (多個文字節點依順序排列)

適用於讀取/提取資料、修改文字節點或屬性等基礎任務。複雜命名空間、XPath 深度查詢、大型文檔建議改用 DOM 或 XMLReader。


安裝

PHP 5 起內建核心,無需安裝。


核心函數

函數說明
simplexml_load_file()從檔案載入 XML 並返回 SimpleXMLElement
simplexml_load_string()從字串載入 XML
simplexml_import_dom()從 DOMNode 轉換

SimpleXMLElement 常用方法

方法說明
__construct()建立物件 (通常不直接呼叫)
addChild()新增子元素
addAttribute()新增屬性
asXML()輸出 XML 字串 (或存檔)
attributes()取得屬性陣列
children()取得子元素 (可指定命名空間)
xpath()執行 XPath 查詢
getName()取得元素名稱
getNamespaces()取得使用中的命名空間
count()子元素數量

實用範例

XML 範例 (note.xml)

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

1. 載入並列印結構

<?php
$xml = simplexml_load_file('note.xml');
print_r($xml);
/* 輸出:
SimpleXMLElement Object
(
    [to] => Tove
    [from] => Jani
    [heading] => Reminder
    [body] => Don't forget me this weekend!
)
*/
?>

2. 存取元素值

<?php
$xml = simplexml_load_file('note.xml');
echo $xml->to . '<br>';
echo $xml->from . '<br>';
echo $xml->heading . '<br>';
echo $xml->body;
?>

3. 遍歷子元素

<?php
$xml = simplexml_load_file('note.xml');
echo $xml->getName() . '<br>'; // note
foreach ($xml->children() as $child) {
    echo $child->getName() . ': ' . $child . '<br>';
}
?>

4. 存取屬性

<?php
$xmlStr = '<book id="123"><title>PHP Guide</title></book>';
$xml = simplexml_load_string($xmlStr);
echo $xml['id']; // 123
echo $xml->attributes()['id']; // 123
?>

5. 修改與新增

<?php
$xml = simplexml_load_file('note.xml');
$xml->to = 'Anna'; // 修改
$xml->addChild('date', '2024-01-15'); // 新增子元素
$xml->addAttribute('version', '1.0'); // 新增屬性
file_put_contents('note_modified.xml', $xml->asXML());
?>

6. XPath 查詢

<?php
$xml = simplexml_load_file('books.xml');
$results = $xml->xpath('//book[@category="php"]/title');
foreach ($results as $title) {
    echo $title . '<br>';
}
?>

命名空間處理

<?php
$xml = simplexml_load_file('namespaced.xml');
$ns = $xml->getNamespaces(true);
$xml->registerXPathNamespace('dc', $ns['dc']);
$creators = $xml->xpath('//dc:creator');
?>

效能與限制提醒

  • SimpleXML 會將整份 XML 載入記憶體,大型檔案 (超過數十 MB) 易造成記憶體耗盡,改用 XMLReader 串流解析。
  • 複雜 XPath、大量命名空間、混合內容模型建議改用 DOMDocument。
  • 修改 XML 結構 (移動/刪除節點) 較繁瑣,DOM 更靈活。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved