php 将xml转换为数组

本文介绍了如何使用PHP将XML文件转换为数组,包括DOM和SimpleXML两种方法。示例中给出了一个students.xml文件的内容,包含多个学生信息,每个学生有sn、name、age和sex属性。通过DOM和SimpleXML库,可以方便地解析XML并将其转换成PHP数组,便于进一步处理和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不多说了,上代码。

students.xml

[html]  view plain  copy
  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <students>  
  3.     <student sn="0001">  
  4.         <name><![CDATA[关羽]]></name>  
  5.         <age>27</age>  
  6.         <sex></sex>  
  7.     </student>  
  8.     <student sn='0002'>  
  9.         <name>张飞</name>  
  10.         <age>27</age>  
  11.         <sex></sex>  
  12.     </student>  
  13.     <student sn='0003'>  
  14.         <name>小乔</name>  
  15.         <age>18</age>  
  16.         <sex></sex>  
  17.     </student>  
  18. </students>  


1.DOM

<?php
$students = [];
//实例化dom对象
$dom = new DOMDocument();
//2.加载xml文档
$dom->load('./students.xml');
//3.获取文档的根节点
$rootElement = $dom->documentElement;
//4.获取子节点
$childNodes = $rootElement->childNodes;
//5.循环子节点
for($i=0;$i<$childNodes->length;$i++){
    //定义一个数组,存放节点
    $student = [];
    //5.1.获取每个子节点
    $childNode = $childNodes->item($i);
    //5.2过滤非元素节点
    if($childNode->nodeType==1){
        $student['sn'] = $childNode->getAttribute('sn');
        //5.2.1获取该元素的所有子节点
        $sonChildNodes = $childNode->childNodes;
        //5.2.2循环该元素的所有子元素
        for($j=0;$j<$sonChildNodes->length;$j++){
            //定义一个数组,存放节点]
            //获取每个子节点
            $sonChildNode = $sonChildNodes->item($j);
            //过滤掉非元素节点
            if($sonChildNode->nodeType==1){
                $student[$sonChildNode->nodeName] = $sonChildNode->nodeValue;
            }
        }
        $students[] = $student;

    }


}
var_dump($students);

2.simpleXml

<?php

$students = [];
$xmls = simplexml_load_file('students.xml');
//获取所有student元素
foreach ($xmls as $xml){
    //声明一个数组
    $student = [];
    //赋值
    $student['sn'] = (string)$xml['sn'];
    $student['name'] = (string)$xml->name;
    $student['age'] = (string)$xml->age;
    $student['sex'] = (string)$xml->sex;
    $students[] = $student;
}
var_dump($students);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值