使用php解析XML到Array

时间:2015-12-03 03:08:18

标签: php json xml

我试图用php解析XML String。

XML的例子是

<?xml version="1.0"?>
<root>
    <Log>
        <Item>
            <name>![CDATA[James]]</name>
            <address>![CDATA[Korea]]</address>
            <email>![CDATA[Korea@gmail.com]]</email>
        </Item>
        <Item>
            <name>![CDATA[James2]]</name>
            <address>![CDATA[Korea2]]</address>
            <email>![CDATA[Korea@gmail.com2]]</email>
        </Item>
    </Log>
</root>

My Parsing PHP Code

$xml = simplexml_load_string($input,null,LIBXML_NOCDATA);
$xml=json_decode( json_encode( $xml),true);

但是,当我尝试获取sizeof($ xml [&#39; Log&#39;] [&#39; Item&#39;])时,遇到一些问题。

如果XML有一个&#39;项目&#39; ,然后sizeof($ xml [&#39; Log&#39;] [&#39; Item&#39;])返回&#39; 3&#39;

但如果XML有4&#39;项目,则返回&#39; 4&#39;。

如果XML有一个&#39;项目&#39;

,我想返回1

我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

我用foreach()解决了这个解析问题。

$xml = simplexml_load_string($input,null,LIBXML_NOCDATA);
$itemArray=$xml->Log->Item;
$i=0;
$sqlParamArray= array();
foreach ($itemArray as $tag) {
 $name= trim($tag->name);
 $address= trim($tag->address);
 $email= trim($tag->email);
  array_push($sqlParamArray,$name,$address,$email);
  $i++;
}
echo $i;

...

sizeof(&#39;项目&#39;)保存在$ i。

我解决了。