在 PHP 中将 XML 转换为数组
-
在 PHP 中使用
simplexml_load_string()
、json_encode()
和json_decode()
函数将 XML 转换为数组 -
使用
simplexml_load_file()
函数并将其类型转换为数组以将 XML 转换为 PHP 中的数组
本教程将介绍如何在 PHP 中将 XML 转换为数组。
在 PHP 中使用 simplexml_load_string()
、json_encode()
和 json_decode()
函数将 XML 转换为数组
我们可以通过一系列转换将 XML 数据表示为 PHP 数组。
我们可以使用 simplexml_load_string()
函数将 XML 字符串解释为一个对象。该函数将 XML 字符串作为其第一个参数。
我们可以指定一个类作为第二个选项。该函数将返回指定类的对象。该函数的第三个参数是 LIBXML
常量。
接下来,我们应该使用 json_encode()
函数将对象转换为 JSON。对于最后一部分,我们可以使用带有参数 TRUE
的 json_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 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