Array To Xml(陣列轉換為 XML 格式)

套件名稱:spatie/array-to-xml

📘 套件介紹

spatie/array-to-xml 是由 Spatie 開發的 PHP 套件,主要用途是將 PHP 陣列轉換成有效的 XML 格式。常用於整合需 XML 格式的系統,如政府 API、B2B 舊系統等。

主要功能特色:

  • 將一維或多維 PHP 陣列轉為結構化 XML。
  • 可自訂 root 元素名稱與 XML 宣告設定。
  • 支援 XML 屬性(attributes)、CDATA、巢狀元素。
  • 提供轉換時額外的設定參數。

📦 安裝方式

composer require spatie/array-to-xml

🔁 陣列轉換為 XML

基本用法

use Spatie\ArrayToXml\ArrayToXml;

$array = [
    'name' => 'Jack',
    'email' => '[email protected]',
    'roles' => [
        'role' => ['admin', 'editor']
    ]
];

$xml = ArrayToXml::convert($array, 'user'); // 第二個參數為 root 元素名稱

echo $xml;

輸出結果:

<?xml version="1.0"?>
<user>
    <name>Jack</name>
    <email>[email protected]</email>
    <roles>
        <role>admin</role>
        <role>editor</role>
    </roles>
</user>

使用屬性與 CDATA

$array = [
    '_attributes' => ['type' => 'example'],
    'name' => [
        '_cdata' => 'Jack <script>alert(1)</script>'
    ],
    'email' => '[email protected]'
];

$xml = ArrayToXml::convert($array, 'user');

echo $xml;

輸出結果:

<?xml version="1.0"?>
<user type="example">
    <name><![CDATA[Jack <script>alert(1)</script>]]></name>
    <email>[email protected]</email>
</user>

⚙️ 支援功能一覽

功能項目 支援 說明
自訂 root element 第二個參數為根節點名稱
XML 屬性 使用 _attributes
CDATA 使用 _cdata
巢狀陣列 支援多層結構
自訂 XML 宣告與編碼 傳入第三個參數 $options 設定,如 encoding

範例:自訂 XML 宣告

$options = [
    'version' => '1.0',
    'encoding' => 'UTF-8',
    'standalone' => true,
];

$xml = ArrayToXml::convert($array, 'user', $options);

💡 實務應用場景

  • 對接政府機關或 B2B 系統需 XML 資料交換時。
  • 產生 sitemap XML(如不使用 Laravel sitemap 套件)。
  • 轉換資料為 XML 格式供使用者下載(如報表、備份等)。
  • 建立自訂 XML API。

🔗 官方資源