QQ扫一扫联系
在开发过程中,我们经常会遇到需要将 XML 数据转换为数组的情况。PHP 提供了多种方法来实现这个功能,本文将介绍两种常用的方法,让你学会如何将 XML 数据转换为数组。
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()
函数,我们可以查看转换后的数组。
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 转换为数组有所帮助。