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++;

  }

}

 

posted on 2017-10-31 19:52  顾君临  阅读(1388)  评论(0)    收藏  举报