2014-06-05 110 views
1

你好,我想解析嵌套的xml,但我使用多个for循环来提取,但我没有找到它非常合适的方式。使用php解析嵌套的xml

我想根据唯一的ID来分析数据,并separte他们,但不能计算任何简单的方法是

,这里是我的xml

<propertyList date="2014-06-02-17:30:33" username="adsss" password="v147C0z5CBlw"> 

<business modTime="2014-06-02-12:22:32" status="current"> 

<agentID>TEST</agentID> 

<uniqueID>1420648</uniqueID> 

<listingAgent id="1"> 

<name>jonny</name> 

<telephone type="BH"></telephone> 

<telephone type="mobile"></telephone> 

<email>[email protected]</email> 

</listingAgent> 

<listingAgent id="2"></listingAgent> 


</business> 

<business modTime="2014-05-16-15:11:41" status="current"> 

<agentID>TEST</agentID> 

<uniqueID>1435201</uniqueID> 

<listingAgent id="1"> 

<name>Mike Smith</name> 

<telephone type="BH"></telephone> 

<telephone type="mobile"></telephone> 

<email>[email protected]</email> 

</listingAgent><listingAgent id="2"></listingAgent> 

</business> 



</propertyList> 

这里是我的代码

<?php 
$xml=simplexml_load_file("myxmldata.xml"); 
echo "<pre>"; 


for($i=0;$i<count($xml);$i++): 

echo "agentID=>".$xml->business[$i]->agentID; 

echo "<br>"; 

echo "uniqueID=>".$xml->business[$i]->uniqueID; 

echo "<br>"; 

endfor; 


for($i=0;$i<count($xml->business->listingAgent);$i++): 

    echo "agentName=>".$xml->business->listingAgent[$i]->name; 

endfor; 

for($i=0;$i<count($xml->business->listingAgent->telephone);$i++): 

    echo "telephonetype=>".$xml->business->listingAgent->telephone[$i]->type; 

endfor; 


?> 
+0

看起来好吗?你面临的问题或预期的结果 –

回答

0

试试这个:

$xml = simplexml_load_file("myxmldata.xml"); 

$data = array(); 
foreach($xml->business as $business) { 
    $business = (array) $business; 
    if (!array_key_exists($business['uniqueID'], $data)) { 
     $listingAgent = (array) $business['listingAgent']; 
     $data[$business['uniqueID']] = array(
      'agentID' => $business['agentID'], 
      'uniqueID' => $business['uniqueID'], 
      'name' => (string)$listingAgent[0]->name, 
      'telephone' => (string) $listingAgent[0]->telephone[0], 
      'mobile' => (string) $listingAgent[0]->telephone[1], 
      'email' => (string) $listingAgent[0]->email, 
     ); 
    } 
} 
var_dump($data); 
+0

HI manoj我想以简单的数组格式提取它们。它非常像名称,电子邮件,代理的电话号码嵌套。 – Vishal

+0

答案更新了,你需要存储你想在数组foramat –

+0

awesome ... manoj.I试图foreach循环,但没有尝试$ business =(array)$ business.This工作正常...谢谢 – Vishal