插件窝 干货文章 php怎么将数组转成xml类

php怎么将数组转成xml类

数组 递归 XML 函数 590    来源:    2025-03-18

在PHP中,你可以使用SimpleXML扩展来将数组转换为XML格式。以下是一个简单的示例,展示了如何将一个关联数组转换为XML格式:

<?php
// 定义一个关联数组
$data = [
    'name' => 'John Doe',
    'age' => 30,
    'email' => 'johndoe@example.com',
    'address' => [
        'street' => '123 Main St',
        'city' => 'Anytown',
        'state' => 'CA',
        'zip' => '12345'
    ]
];

// 创建一个SimpleXMLElement对象
$xml = new SimpleXMLElement('<root/>');

// 递归函数将数组转换为XML
function arrayToXml($data, &$xml) {
    foreach ($data as $key => $value) {
        if (is_array($value)) {
            if (!is_numeric($key)) {
                $subnode = $xml->addChild($key);
                arrayToXml($value, $subnode);
            } else {
                arrayToXml($value, $xml);
            }
        } else {
            $xml->addChild($key, htmlspecialchars($value));
        }
    }
}

// 调用递归函数
arrayToXml($data, $xml);

// 输出XML
echo $xml->asXML();
?>

代码解释:

  1. 定义数组:我们定义了一个关联数组$data,其中包含一些基本信息和嵌套的地址信息。

  2. 创建SimpleXMLElement对象:我们创建了一个SimpleXMLElement对象,并指定根元素为<root>

  3. 递归函数arrayToXml:这个函数递归地将数组转换为XML格式。如果数组的值是另一个数组,它会递归地处理;否则,它会将键值对作为子元素添加到XML中。

  4. 调用递归函数:我们将数组$dataSimpleXMLElement对象$xml传递给arrayToXml函数。

  5. 输出XML:最后,我们使用asXML()方法将生成的XML输出。

输出结果:

<?xml version="1.0"?>
<root>
    <name>John Doe</name>
    <age>30</age>
    <email>johndoe@example.com</email>
    <address>
        <street>123 Main St</street>
        <city>Anytown</city>
        <state>CA</state>
        <zip>12345</zip>
    </address>
</root>

注意事项:

  • htmlspecialchars()函数用于确保XML中的特殊字符被正确转义。
  • 如果数组的键是数字,它们将被忽略,因为XML元素的名称不能以数字开头。

通过这种方式,你可以轻松地将PHP数组转换为XML格式。