网上有很多解析xml的方法,但是我比较喜欢使用simplexml_load_string()这个方法来解析,下面看一下两种类型的xml解析过程:
(1)
<?php
$xml='<xml name="sendBatch" result="1">
<Item cid="333" sid="333" msgid="111" total="1" price="0.10" remain="170.040"/>
<Item cid="444" sid="444" msgid="222" total="1" price="0.10" remain="169.940"/>
</xml>';
$re=simplexml_load_string(utf8_encode($xml));
if($re['result']==1)
{
foreach ($re->Item as $item)
{
$stat['msgid'] =trim((string)$item['msgid']);
$stat['total']=trim((string)$item['total']);
$stat['price']=trim((string)$item['price']);
$stat['remain']=trim((string)$item['remain']);
$stat_arr[]=$stat;
}
if(is_array($stat_arr))
{
echo "发送成功,返回值为".$re['result'];
}
}
?>
(2)
<?php
$re="<?xml version='1.0' encoding='utf-8'?>
<messStatus>
<status>0</status>
<error>0</error>
<mess>
<pmess><sender>13223758566</sender><receiver>393023</receiver><cont></cont><indatatime>2014-5-31 12:31:43</indatatime></pmess>
<pmess><sender>15555101223</sender><receiver>393023</receiver><cont>收到</cont><indatatime>2014-6-5 17:23:53</indatatime>
</pmess>
</mess>
</messStatus>";
$xml = simplexml_load_string(utf8_encode($re));
if($xml->status=='0')
{
foreach ($xml->mess->children() as $value)
{
$stat['mobile']=(string)$value->sender;
$stat['content']=utf8_decode((string)$value->cont);
$stat_arr[]=$stat;
}
}
print_r($stat_arr);
?>
两种解析方法是不一样的,具体看代码