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

PHP Array2xml 類別:陣列轉 XML 字串實作

     編輯:PHP 綜合知識

需將 PHP 陣列快速轉為 XML 格式(如 API 回應、資料交換)?Array2xml 類別提供簡單的遞歸轉換,支援數字索引與關聯索引混合陣列,自動處理標籤命名。

類別程式碼

<?php
class Array2xml {
    var $xml = '';

    function array2xml($array, $encoding = 'utf-8') {
        $this->xml = '<?xml version="1.0" encoding="'.$encoding.'"?>';
        $this->xml .= $this->_array2xml($array);
    }

    function getXml() {
        return $this->xml;
    }

    function _array2xml($array) {
        $xml = '';
        foreach ($array as $key => $val) {
            // 數字索引轉為 item 標籤並保留 id 屬性
            if (is_numeric($key)) {
                $key = "item id=\"$key\"";
            } else {
                // 關聯索引:去除空格後的文字作為標籤名
                list($key) = explode(' ', $key);
            }
            $xml .= "<$key>";
            $xml .= is_array($val) ? $this->_array2xml($val) : $val;
            list($key) = explode(' ', $key); // 重新取得純標籤名
            $xml .= "</$key>";
        }
        return $xml;
    }
}
?>

使用範例

<?php
$data = [
    'user' => [
        'id' => 123,
        'name' => '張三',
        'roles' => ['admin', 'editor']
    ],
    'status' => 'active'
];

$conv = new Array2xml();
$conv->array2xml($data);
echo $conv->getXml();
/* 輸出:
<?xml version="1.0" encoding="utf-8"?>
<user>
  <id>123</id>
  <name>張三</name>
  <roles>
    <item id="0">admin</item>
    <item id="1">editor</item>
  </roles>
</user>
<status>active</status>
*/
?>

特性與限制

  • ✅ 自動處理多維陣列遞歸轉換
  • ✅ 數字索引轉為 <item id="n"> 保留順序
  • ✅ 關聯索引鍵名含空格時,取第一個詞作為標籤
  • ❌ 不支援屬性設定(除數字索引的 id)
  • ❌ 不支援 CDATA 區塊包裹
  • ❌ 特殊字元(&、<、>)未自動轉義,資料需預先處理

進階建議

正式專案建議使用 PHP 內建 DOMDocument 或成熟庫(如 spatie/array-to-xml),可正確處理編碼、轉義、屬性、命名空間等複雜需求。

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