PHP XML 到数组中

王林
发布: 2024-08-29 13:09:58
原创
1050 人浏览过

我们用它来将 XML 文档转换为 PHP 数组。有时,我们需要将 XML 文档作为传入数据进行处理或将数据作为 XML 文档导出。 XML 语言用于构建跨网站或应用程序共享的数据。因此,它提供了 XML 到数组的操作,以便顺利地处理 XML 数据。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

在转换时,我们需要使用下面提到的一些函数 –

  • file_get_contents() 函数: 此函数将文件作为字符串读取。
  • simplexml_load_string() 函数: 该函数用于解析 XML 并返回一个对象。
  • json_encode() 函数: 该函数对 JSON 字符串进行编码并返回 JSON 值。
  • json_decode() 函数: 该函数解码 JSON 字符串(PHP 变量)。

将 PHP XML 转换为数组

它接受 XML 文档并将其转换为数组。假设我们有一个 XML 文档 ExXMl.xml;现在,我们要将其转换为数组。因此,要进行转换,我们需要遵循一些步骤 –

  1. 借助 file_get_content() 函数将 ExXMl.xml 文件导入 PHP,因此它将 ExXMl.xml 文件作为字符串读取并将其存储到变量中。
  2. 接下来,读取的字符串数据将借助 simplexml_load_string() 函数转换为对象。
  3. 最后使用json_decode()函数对json字符串进行解码,将json编码后的字符串转换为数组。

示例

加载 XML 文件并将其转换为 PHP 数组的示例 –

示例#1

首先,我们创建名为“ExXML.xml”的 xml 数据文件,并将数据内容创建为 –

代码:

<?xml version="1.0" encoding="utf-8"?>
<Student>
<firstname name = 'John'>
<rollno> 12 </rollno>
<marks> 78 </marks>
<subject> English </subject>
</firstname>
<firstname name='Sam'>
<rollno> 15 </rollno>
<marks> 80 </marks>
<subject> English </subject>
</firstname>
<firstname name='Praveen'>
<rollno> 30 </rollno>
<marks> 50 </marks>
<subject> English </subject>
</firstname>
</Student>
Next,we create the PHP file to read and load the XML file, as below -
<?php
// xml file
$file = "ExXML.xml";
// Read XML file as string
$xml_file = file_get_contents($file);
//  xml string is Convert into an object
$obj = simplexml_load_string($xml_file);
// AN object Convert into json string
$json_string = json_encode($obj);
// Convert json string into an array
$array = json_decode($json_string, true);
// print an array
print_r($array);
?>
登录后复制

输出:

PHP XML 到数组中

所有开始和结束标签都是正确的。接下来,加载的对象分别借助 json_encode () 和 json_decode() 函数编码和解码为 PHP 数组。

示例#2

遇到并解析错误的示例-

接下来,我们编写 PHP 代码来将 PHP XML 解析为数组,我们将看到在将 XML 解析为数组时,由于 XML 标签不匹配或结构不正确而发生的解析错误,如下所示 –

代码:

<?xml version='1.0'?>
<Student>
<firstname name = 'John'>
<rollno> 12 </rollno>
<marks> 78 </marks>
<!-- missing -->
</firstname>
<firstname name='Sanjay'>
<rollno> 15 </rollno>
<marks> 80 </marks>
<!-- mismatch tag -->
<subject> English <subject>
</firstname>
<firstname name='Parvez'>
<rollno> 30 </rollno>
<marks> 50 </marks>
<subject> English </subject>
</firstname>
</Student>
Next, we create the PHP file to read and load the XML file, as below -
<?php
// xml file
$file = "ExXML.xml";
// Read file as string
$xml_file = file_get_contents($file);
//  xml string is Convert into an object
$obj = simplexml_load_string($xml_file);
// check xml load or not
if ($obj == FALSE) {
echo "There were errors to parse the XML file.\n";
exit;
}
// AN object Convert into json string
$json_string = json_encode($obj);
// Convert json string into an array
$array = json_decode($json_string, true);
// print an array
print_r($array);
?>
登录后复制

输出:

PHP XML 到数组中

开始和结束标记之一不匹配,并且缺少一个标记(如带有注释标记的 XML 文件中所述)。  解析和加载 XML 文件时会出现警告,如上面的输出所示。因此,通过阅读警告,更正 XML 文件并再次加载。

以上是PHP XML 到数组中的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!