xml字符就不写了,直接引用
<?php
$xml="<?xml version='1.0' encoding='utf-8'?>
<root>
<stu_info>
<id>1</id>
<sname>jack</sname>
<age>18</age>
<addr>nanjing1</addr>
</stu_info>
<stu_info>
<id>2</id>
<sname>lucy</sname>
<age>21</age>
<addr>shanghai2</addr>
</stu_info>
<stu_info>
<id>3</id>
<sname>jimmy</sname>
<age>12</age>
<addr>nanjing3</addr>
</stu_info>
<works>
<id>4</id>
<sname>lily</sname>
</works>
<works>
<id>5</id>
<sname>lily2</sname>
</works>
</root>";
//通过simplexml_load_string将xml字符串转换成数组
$simple=simplexml_load_string($xml);
$arr=[];
$i=0;
foreach($simple as $k=>$v){
foreach($v as $k1=>$v1){
$arr[$k][$i][$k1]=(string)$v1;
}
$i++;
}
print_r($arr);
第二种方法
将xml文件解析成数组 配合children()和xpath()实现
$simle=simplexml_load_file("xml03.xml");
$arr=[];
$i=1;
foreach($simple->children() as $k=>$v){
foreach($v->children() as $k1=>$v1){
$arr[$k][$i][$k1]=(string)$v1;
}
$i++;
}
$simp=simplexml_load_file("xml03.xml");s
foreach($simp->xpath("/root/stu_info/id") as $k=>$v){
var_dump($v->Attributes());//打印xml标签的属性 Attributes()
}
第三种,利用dom对象实现将xml文件转换成数组
$dom=new DomDocument('1.0','utf-8');
$dom->load("xml03.xml"); // 将文件加载成dom对象
$root=$dom->documentElement() //获取对象里面的根节点
$arr=[];
$i=0;
foreach($root->childNodes as $v){
if($v->nodeType==1){
foreach($v->childNodes as $k1=>$v1){
if($v1->nodeType==1){
$arr[$k->tagName][$i][$k1]=(string)$v1;
}
}
$i++;
}
}
浙公网安备 33010602011771号