ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP 将xml文件解析为数组

2022-08-22 21:05:10  阅读:344  来源: 互联网

标签:xml 解析 转换 函数 json 字符串 Array PHP


SimpleXML扩展在解析和操作XML文档时非常实用,本文将讨论如何使用php SimpleXML解析xml文件。

首先,让我们看一下使用SimpleXML扩展将XML内容转换为数组所需遵循的步骤。

  • 将xml文件转换为字符串:  使用php file_get_contents()函数将整个xml文件作为字符串读取并存储到变量中。
  • 将字符串转换为对象: 将字符串转换为对象,可以通过PHP的一些内置函数simplexml_load_string()轻松完成。
  • 将对象转换为JSON:  json_encode()函数将对象,数组的数据格式转换为json格式的数据
  • 解码JSON对象:  json_decode()函数解码JSON字符串。它将JSON编码的字符串转换为PHP变量。

 

php解析xml文件需要使用到的函数

file_get_contents():

file_get_contents() 函数把整个xml文件读入一个字符串中

simplexml_load_string():

simplexml_load_string() 函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象。

simplexml_load_file():

simplexml_load_file() 函数把 XML 文档载入对象中。如果失败,则返回 false。

json_encode():

json_encode函数主要用来将数组和对象,转换为json格式。

json_decode():

json_decode函数用于将json文本转换为相应的PHP数据结构.

 

PHP将xml文件解析为数组 - 示例

xml文件abc.xml如下:
<?xml version='1.0'?>
<userdb>
   <firstname name='Alex'>
      <symbol>AL</symbol>
      <code>A</code>
   </firstname>
      <firstname name='Sandra'>
         <symbol>SA</symbol>
         <code>S</code>
   </firstname>
</userdb>

php代码:

<?php
// xml file path
   $path = "abc.xml";
   $xmlfile = file_get_contents($path);
   $new = simplexml_load_string($xmlfile);
   $jsonfile = json_encode($new);
   $myarray = json_decode($jsonfile, true);
   print_r($myarray);
?>

运行结果:

Array
(
   [firstname] => Array
       (
           [0] => Array
               (
                   [@attributes] => Array
                       (
                           [name] => Alex
                       )
                   [symbol] => AL
                   [code] => A
               )
           [1] => Array
               (
                   [@attributes] => Array
                       (
                           [name] => Sandra
                       )
                   [symbol] => SA
                   [code] => S
               )
       )
)

以上就是本文的全部内容,希望对大家的学习有所帮助。更多教程请访问码农之家

标签:xml,解析,转换,函数,json,字符串,Array,PHP
来源: https://www.cnblogs.com/myhomepages/p/16614201.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有