在 PHP 中将 XML 转换为数组

Subodh Poudel 2023年1月30日
  1. 在 PHP 中使用 simplexml_load_string()json_encode()json_decode() 函数将 XML 转换为数组
  2. 使用 simplexml_load_file() 函数并将其类型转换为数组以将 XML 转换为 PHP 中的数组
在 PHP 中将 XML 转换为数组

本教程将介绍如何在 PHP 中将 XML 转换为数组。

在 PHP 中使用 simplexml_load_string()json_encode()json_decode() 函数将 XML 转换为数组

我们可以通过一系列转换将 XML 数据表示为 PHP 数组。

我们可以使用 simplexml_load_string() 函数将 XML 字符串解释为一个对象。该函数将 XML 字符串作为其第一个参数。

我们可以指定一个类作为第二个选项。该函数将返回指定类的对象。该函数的第三个参数是 LIBXML 常量。

接下来,我们应该使用 json_encode() 函数将对象转换为 JSON。对于最后一部分,我们可以使用带有参数 TRUEjson_decode() 函数将 JSON 转换为数组。

例如,考虑以下 XML 数据。

<students>
 <bachelors>
 <name>Jack</name>
 <name>Hari</name>
 </bachelors>
 <masters>
 <name>Sia</name>
 <name>Paul</name>
 </masters>
</students>

创建一个变量 $xmlstr 并将所有 XML 作为字符串存储在变量中。接下来,创建另一个变量 $XML 并将 simplexml_load_string() 函数分配给它。

在函数中,将 $xmlstr 设置为第一个参数,将 SimpleXMLElement 设置为类,将 LIBXML_NOCDATA 设置为第三个参数。接下来,使用 json_encode() 函数将 $XML 转换为 JSON。

然后,使用 json_decode() 函数将 JSON 转换为数组。不要忘记包含 TRUE 作为 json_decode() 函数的第二个参数。最后,打印数组。

此处,LIBXML_NOCDATA 常量将字符数据 (CDATA) 合并为文本节点。因此,我们可以使用这些不同的 PHP 函数将 XML 转换为 PHP 数组。

$xmlstr ='
<students>
 <bachelors>
 <name>Jack</name>
 <name>Hari</name>
 </bachelors>
 <masters>
 <name>Sia</name>
 <name>Paul</name>
 </masters>
</students>';
$XML = simplexml_load_string($xmlstr, "SimpleXMLElement", LIBXML_NOCDATA);
$json = json_encode($XML);
$arr = json_decode($json,TRUE);
print_r($arr);

输出:

Array ( [bachelors] => Array ( [name] => Array ( [0] => Jack [1] => Hari ) ) [masters] => Array ( [name] => Array ( [0] => Sia [1] => Paul ) ) ) 

使用 simplexml_load_file() 函数并将其类型转换为数组以将 XML 转换为 PHP 中的数组

我们可以使用 simplexml_load_file() 函数将 XML 解释为一个对象。然后,我们可以通过类型转换将对象转换为数组。

该函数将 XML 文件的路径作为第一个参数。该函数几乎类似于 simplexml_load_string() 函数。我们可以创建一个 XML 文件并在 simplexml_load_file() 函数中使用它的路径。

例如,我们可以在第一种方法中使用相同的 XML 文件,将 XML 文件保存为 file.xml,并在 PHP 中创建一个变量 $XML。将 simplexml_load_file() 分配给以 file.xml 作为参数的变量。

接下来,创建一个 $arr 变量并将 $XML 变量类型转换为一个数组。将类型转换的数组分配给 $arr 变量。最后,使用 print_r() 函数打印 $arr 变量。

这样,我们就可以使用 simplexml_load_file() 函数来加载 XML 文件并将其转换为数组。

$XML = simplexml_load_file('file.xml');
$arr = (array)$XML;
print_r($arr);

输出:

Array ( [bachelors] => SimpleXMLElement Object ( [name] => Array ( [0] => Jack [1] => Hari ) ) [masters] => SimpleXMLElement Object ( [name] => Array ( [0] => Sia [1] => Paul ) ) ) 
作者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

相关文章 - PHP XML

相关文章 - PHP Array