📜  php xml 到数组 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:21.421000             🧑  作者: Mango

PHP XML 到数组

在 PHP 中,我们可以使用 SimpleXML 扩展将 XML 文件转换为数组形式,使得对于 XML 内容的处理变得容易。本文将介绍如何使用 SimpleXML 扩展将 XML 转换成数组,并提供实用的示例代码。

SimpleXML 扩展

SimpleXML 是 PHP 内置的一个扩展库,允许开发者将 XML 数据转换为对象形式,并且可以方便地访问和操作其中的属性和节点。使用 SimpleXML 扩展,我们可以将 XML 文件加载到内存中,并将其转换为一个数组或对象。SimpleXML 提供了一个非常方便的 API,是 PHP 处理 XML 数据的首选工具之一。

将 XML 转换为数组

以下示例代码演示了如何使用 SimpleXML 扩展将 XML 数据转换为数组形式。

$xmlString = '<root><element1>Value 1</element1><element2>Value 2</element2><element3>Value 3</element3></root>';
$xml = simplexml_load_string($xmlString);
$json = json_encode($xml);
$array = json_decode($json, TRUE);

print_r($array);

代码说明:

  1. simplexml_load_string() 函数将 XML 数据加载到内存中,并将其转换为 SimpleXMLElement 对象。

  2. json_encode() 函数将 SimpleXMLElement 对象转换为 JSON 格式的字符串。

  3. json_decode() 函数将 JSON 格式的字符串转换为 PHP 数组。

  4. print_r() 函数用于打印数组内容。

输出结果如下:

Array
(
    [element1] => Value 1
    [element2] => Value 2
    [element3] => Value 3
)
处理节点属性

XML 节点除了包含文本值,还可以包含属性。以下示例代码演示了如何读取 XML 节点属性并将其转换为 PHP 数组。

$xmlString = '<root><element attribute1="Value 1" attribute2="Value 2" attribute3="Value 3">Element Content</element></root>';
$xml = simplexml_load_string($xmlString);
$json = json_encode($xml);
$array = json_decode($json, TRUE);

print_r($array);

代码说明:

  1. simplexml_load_string() 函数将 XML 数据加载到内存中,并将其转换为 SimpleXMLElement 对象。

  2. json_encode() 函数将 SimpleXMLElement 对象转换为 JSON 格式的字符串。

  3. json_decode() 函数将 JSON 格式的字符串转换为 PHP 数组。

  4. print_r() 函数用于打印数组内容。

输出结果如下:

Array
(
    [element] => Array
        (
            [@attributes] => Array
                (
                    [attribute1] => Value 1
                    [attribute2] => Value 2
                    [attribute3] => Value 3
                )

            [0] => Element Content
        )
)

我们可以发现,节点属性被封装到数组的 @attributes 键名下。

总结

使用 SimpleXML 扩展将 XML 数据转换为数组形式相对来说是比较简单的,开发者可以很方便的对其中的节点和属性进行访问和操作。本文提供了转换 XML 数据为数组的示例代码,并介绍了如何处理 XML 节点属性。