行业资讯 php怎么把xml转成数组

php怎么把xml转成数组

115
 

PHP 如何将 XML 转换为数组

在开发过程中,我们经常会遇到需要将 XML 数据转换为数组的情况。PHP 提供了多种方法来实现这个功能,本文将介绍两种常用的方法,让你学会如何将 XML 数据转换为数组。

方法一:使用 SimpleXML 扩展

PHP 中的 SimpleXML 扩展是一个简单而高效的解析 XML 数据的工具。它可以将 XML 数据转换为对象,通过访问对象属性的方式来获取 XML 节点的值。接下来,我们将演示如何使用 SimpleXML 扩展将 XML 转换为数组:

// XML 数据
$xmlData = '<bookstore>
  <book>
    <title>PHP 从入门到精通</title>
    <author>张三</author>
    <price>29.99</price>
  </book>
  <book>
    <title>JavaScript 实战手册</title>
    <author>李四</author>
    <price>19.99</price>
  </book>
</bookstore>';

// 将 XML 转换为 SimpleXMLElement 对象
$xml = simplexml_load_string($xmlData);

// 将 SimpleXMLElement 对象转换为数组
$array = json_decode(json_encode($xml), true);

// 输出数组
print_r($array);

上述代码中,我们首先定义了一个包含 XML 数据的字符串 $xmlData。然后,使用 simplexml_load_string() 函数将 XML 数据转换为 SimpleXMLElement 对象,再通过将对象转换为 JSON 格式,并使用 json_decode() 函数将 JSON 数据转换为数组,最终得到了包含 XML 数据的数组 $array。通过 print_r() 函数,我们可以查看转换后的数组。

方法二:使用 DOMDocument 类

PHP 的 DOMDocument 类提供了更多灵活的方法来解析和处理 XML 数据。下面是使用 DOMDocument 类将 XML 转换为数组的示例代码:

// XML 数据
$xmlData = '<bookstore>
  <book>
    <title>PHP 从入门到精通</title>
    <author>张三</author>
    <price>29.99</price>
  </book>
  <book>
    <title>JavaScript 实战手册</title>
    <author>李四</author>
    <price>19.99</price>
  </book>
</bookstore>';

// 创建 DOMDocument 对象并加载 XML 数据
$dom = new DOMDocument();
$dom->loadXML($xmlData);

// 将 XML 转换为数组
$array = [];
foreach ($dom->getElementsByTagName('book') as $book) {
    $bookArr = [];
    foreach ($book->childNodes as $node) {
        if ($node->nodeType === XML_ELEMENT_NODE) {
            $bookArr[$node->nodeName] = $node->nodeValue;
        }
    }
    $array[] = $bookArr;
}

// 输出数组
print_r($array);

在上面的代码中,我们使用 DOMDocument 类创建一个 DOM 对象并加载 XML 数据。然后,通过遍历 DOM 对象的节点,将 XML 数据转换为关联数组 $array

结论

通过使用 SimpleXML 扩展或 DOMDocument 类,我们可以很方便地将 XML 数据转换为数组,便于在 PHP 中进行处理和操作。选择合适的方法取决于项目的具体需求和个人偏好。希望本文对你了解如何在 PHP 中将 XML 转换为数组有所帮助。

更新:2023-09-08 00:00:11 © 著作权归作者所有
QQ
微信