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

PHP5 DOM 操作 XML 完整教程:讀取、XPath、增刪改

     編輯:PHP 綜合知識

前言

PHP5 引入 DOMDocument 類,提供強大、標準的 XML 操作 API。本文通過完整示例演示加載、讀取、XPath 查詢、新增、刪除、修改節點,並附帶測試用 test.xml。

核心代碼

<?php
$dom = new DomDocument();
$dom->load("test.xml");

// 1. 獲取所有 title 元素
$titles = $dom->getElementsByTagName("title");
foreach ($titles as $node) {
    echo $node->textContent . "<br/>";
}

// 2. XPath 查詢(更強大)
$xpath = new DOMXPath($dom);
$titles = $xpath->query("/rss/channel/item/title");
foreach ($titles as $node) {
    echo $node->textContent . "<br/>";
}
// 進階 XPath 示例:
// /rss/channel/item[position()=1]/title  第一個 item 的 title
// /rss/channel/item/title[@id='23']      id=23 的 title

// 3. 新增節點
$item = $dom->createElement("item");
$title = $dom->createElement("title");
$title->appendChild($dom->createTextNode("title text"));
$item->appendChild($title);
$dom->documentElement->getElementsByTagName('channel')->item(0)->appendChild($item);

// 4. 刪除節點(兩種方式)
// $dom->documentElement->removeChild($dom->documentElement->getElementsByTagName("channel")->item(0));
// $dom->documentElement->removeChild($xpath->query("/rss/channel")->item(0));

// 5. 修改節點:替換第一個 title
$firstTitle = $xpath->query("/rss/channel/item/title")->item(0);
$newTitle = $dom->createElement("title");
$newTitle->appendChild(new DOMText("This's the new title text!!!"));
$firstTitle->parentNode->replaceChild($newTitle, $firstTitle);

// 修改屬性示例
// $firstTitle->setAttribute("orderby", "4");

$dom->save("newfile.xml");
echo "<hr/><a href='newfile.xml'>查看生成文件</a>";
?>

測試數據 test.xml

<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title>javascript</title>
<item><title orderby="1">out put excel used javascript</title></item>
<item><title orderby="2">out put word used javascript</title></item>
<item><title orderby="3">xmlhttp</title></item>
</channel>
</rss>

關鍵點總結

  • DOMDocument::load() 加載文件,save() 落盤
  • getElementsByTagName() 簡單遍歷;DOMXPath::query() 支持複雜路徑、條件
  • 創建節點:createElement() + createTextNode() + appendChild()
  • 修改採「創建新節點 → replaceChild()」模式
  • 編碼注意:XML 聲明編碼與 PHP 內部處理一致,避免亂碼

擴展

DOMDocument 亦可解析 HTML(loadHTMLFile()),抓取網頁標題等信息。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved