2016-04-15 72 views
0

我想得到每个<object pk='1'>, <object pk='2'><field>属性像update_on和它的每个<field>文本像05 Apr, 2013, 19:40 hrs但我无法获取所有数据。请帮我从php获取数据在PHP

我尝试下面的代码,下面的代码只获取第一个对象的字段

$xml = new SimpleXMLElement($server_output); 
echo "<ul>"; 

foreach($xml->object->field as $key => $value) 
{ ?> 
<li style="list-style:none;"><?php echo $value['name'] .'-' ?> <span><?php echo $value; ?> </span><li> 
<?php 
if($value['name'] == 'scans') 
{ 

      print_r($value->object); 


} 
    } 
echo "</ul>"; 

下面Xml代码

<ecomexpress-objects version="1.0"> 
    <object pk="1" model="awb"> 
     <field type="BigIntegerField" name="awb_number">700054480</field> 
     <field type="CharField" name="orderid">5012</field> 
     <field type="FloatField" name="actual_weight">0.5</field> 
     <field type="CharField" name="origin">DELHI-DSW</field> 
     <field type="CharField" name="destination">DELHI-DLN</field> 
     <field type="CharField" name="customer">Ecom Express Private Limited - 32012</field> 
     <field type="CharField" name="consignee">MUKESH KUMAR GUPTA</field> 
     <field type="CharField" name="pickupdate">11-Feb-2013</field> 
     <field type="CharField" name="status">Delivered/Closed</field> 
     <field type="CharField" name="reason_code"/> 
     <field type="CharField" name="reason_code_description"/> 
     <field type="CharField" name="reason_code_number">999</field> 
     <field type="CharField" name="receiver">mukesh 9999488339</field> 
     <field type="CharField" name="expected_date">12-Feb-2013</field> 
     <field type="CharField" name="last_update_date">05-Apr-2013</field> 
     <field type="CharField" name="delivery_date">2013-02-17 11:26:00</field> 
     <field type="CharField" name="ref_awb">None</field> 
     <field type="CharField" name="rts_shipment"/> 
     <field type="CharField" name="system_delivery_update">2013-02-17 11:26:00</field> 
     <field type="CharField" name="rts_system_delivery_status"/> 
     <field name="scans"> 
     <object pk="1" model="scan_stages"> 
      <field type="DateTimeField" name="updated_on">05 Apr, 2013, 19:40 hrs</field> 
      <field type="CharField" name="status">SAL Tally closed</field> 
      <field type="CharField" name="reason_code"/> 
      <field type="CharField" name="reason_code_number"/> 
      <field type="CharField" name="location">DLN</field> 
      <field type="CharField" name="Employee">Umesh Jaswanti - 10015</field> 
     </object> 
     <object pk="2" model="scan_stages"> 
      <field type="DateTimeField" name="updated_on">05 Apr, 2013, 19:39 hrs</field> 
      <field type="CharField" name="status">SAL Tally closed</field> 
      <field type="CharField" name="reason_code"/> 
      <field type="CharField" name="reason_code_number"/> 
      <field type="CharField" name="location">DLN</field> 
      <field type="CharField" name="Employee">Umesh Jaswanti - 10015</field> 
     </object> 
     <object pk="3" model="scan_stages"> 
      <field type="DateTimeField" name="updated_on">05 Apr, 2013, 19:39 hrs</field> 
      <field type="CharField" name="status">SAL Tally closed</field> 
      <field type="CharField" name="reason_code"/> 
      <field type="CharField" name="reason_code_number"/> 
      <field type="CharField" name="location">DLN</field> 
      <field type="CharField" name="Employee">Umesh Jaswanti - 10015</field> 
      </object> 
     </field> 
     </object> 
</ecomexpress-objects> 

回答

0

,你必须使用嵌套foreach

foreach($xml->object->field as $key => $value) 
{ 
    (...) 
    if($value['name'] == 'scans') 
    { 
     foreach($value->object as $obj) 
     { 
      /* Here you can output <object> attributes */ 
      foreach($obj->field as $field) 
      { 
       /* Here you can output <field> attributes and values */ 
      } 
     } 
    } 
} 
+0

感谢求助 – James