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

PHP XML 生成與解析實戰:DOMDocument 與 SimpleXML 完整指南

     編輯:PHP 相關知識

一、使用 DOMDocument 生成 XML

DOMDocument 採用樹狀結構,逐節點構建,適合複雜 XML 生成。

核心步驟

<?php
function generateXML() {
    // 1. 建立 DOM 文檔
    $dom = new DOMDocument("1.0", "UTF-8");
    
    // 2. 創建根節點
    $root = $dom->createElement("recommend");
    $dom->appendChild($root);
    
    // 3. 迴圈添加子節點
    foreach ($data as $item) {
        $entry = $dom->createElement("entry");
        $root->appendChild($entry);
        
        // 子節點
        $simgurl = $dom->createElement("simgurl");
        $imgurl = $dom->createElement("imgurl");
        $fileurl = $dom->createElement("fileurl");
        
        $entry->appendChild($simgurl);
        $entry->appendChild($imgurl);
        $entry->appendChild($fileurl);
        
        // 文本節點
        $simgurl->appendChild($dom->createTextNode($item[0]));
        $imgurl->appendChild($dom->createTextNode($item[1]));
        $fileurl->appendChild($dom->createTextNode($item[2]));
    }
    
    // 4. 輸出
    header("Content-Type: text/xml; charset=UTF-8");
    echo $dom->saveXML();
}
?>

二、SimpleXML 解析 XML

字串解析

<?php
$xmlString = <<<XML
<?xml version="1.0"?>
<document>
    <title>Forty What?</title>
    <from>Joe</from>
    <to>Jane</to>
    <body>I know the answer -- but what's the question?</body>
</document>
XML;

$xml = simplexml_load_string($xmlString);
var_dump($xml);
/* 輸出:
object(SimpleXMLElement)#1 (4) {
  ["title"]=> string(10) "Forty What?"
  ["from"]=> string(3) "Joe"
  ["to"]=> string(4) "Jane"
  ["body"]=> string(46) "I know the answer -- but what's the question?"
}
*/
?>

檔案解析

$xml = simplexml_load_file('data.xml');
echo $xml->title; // 直接屬性存取

三、XML 轉陣列工具函數

<?php
function xmlToArray($xmlString) {
    $array = (array) simplexml_load_string($xmlString, 'SimpleXMLElement', LIBXML_NOCDATA);
    foreach ($array as $key => $item) {
        $array[$key] = structToArray($item);
    }
    return $array;
}

function structToArray($item) {
    if (!is_string($item)) {
        $item = (array) $item;
        foreach ($item as $key => $val) {
            $item[$key] = structToArray($val);
        }
    }
    return $item;
}
?>

四、DOMDocument vs SimpleXML 選型指南

場景推薦理由
大型 XML 生成DOMDocument記憶體效率高,支援複雜結構
簡單 XML 讀取SimpleXML語法直觀,屬性存取如物件
XPath 查詢DOMDocument支援 DOMXPath
大檔案串流處理XMLReader拉式解析,低記憶體
需修改現有 XMLDOMDocument完整的節點操作 API

五、編碼注意事項

  • 建立 DOMDocument 時指定編碼:new DOMDocument("1.0", "UTF-8")
  • 輸出前設定正確 Header:header("Content-Type: application/xml; charset=UTF-8")
  • SimpleXML 預期輸入為 UTF-8,其他編碼需先 iconv 轉換
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved