foreach如何循环使用这个simplexml_load_string

时间:2011-06-30 23:20:16

标签: php xml simplexml

我正在使用simplexml_load_string解析xml,如下所示:

 $xml = simplexml_load_string($response);

        echo '{'.
            '"Date":"'.$xml->Date[0].'",'.
            '"Description":"'.$xml->ShipTos->ShipTo->ShippingGroups->ShippingGroup->OrderItems->OrderItem->Description[0].'",'. 
            '"Track":"'.$xml->Shipments->Shipment->Track[0].'"'.
            '}'; 

这可以正常工作,但是如果一个节点多次出现在xml中,它只抓取一次。有人可以帮我理解如何专门为Description节点编写foreach循环吗?

2 个答案:

答案 0 :(得分:5)

您只是指每个SimpleXMLObject的一个实例。 例如,$xml->Date[0]指的是仅首次出现Date对象。要打印所需的所有Date对象 循环通过它们

foreach( $xml->Date as $date ){
   print (string)$date;
}

或者,您可以使用children功能:

foreach( $xml->children('Date') as $date ){
   print (string)$date;
}

答案 1 :(得分:1)

$datebuffer;
$count = 0;
foreach($xml->Date as $date){
   $count++;
   datebuffer .= "Date:".$count ." ".$date; 
}

依旧......