2011-09-12 134 views
0

這裏是我的XML數據的例子使用PHP解析XML

<GetSendStatisticsResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/"> 
<GetSendStatisticsResult> 
<SendDataPoints> 
    <member> 
    <DeliveryAttempts>69</DeliveryAttempts> 
    <Timestamp>2011-09-12T01:00:00Z</Timestamp> 
    <Rejects>0</Rejects> 
    <Bounces>0</Bounces> 
    <Complaints>0</Complaints> 
    </member> 
    <member> 
    <DeliveryAttempts>1</DeliveryAttempts> 
    <Timestamp>2011-09-08T17:00:00Z</Timestamp> 
    <Rejects>0</Rejects> 
    <Bounces>0</Bounces> 
    <Complaints>0</Complaints> 
    </member> 
    <member> 
    <DeliveryAttempts>282</DeliveryAttempts> 
    <Timestamp>2011-09-09T18:00:00Z</Timestamp> 
    <Rejects>0</Rejects> 
    <Bounces>0</Bounces> 
    <Complaints>0</Complaints> 
    </member> 

這裏是我的代碼:

$xml = simplexml_load_string($resp); 
$result = $xml->xpath('//member'); 
foreach($result->member as $member) 
    { 
    echo "<p>"; 
    echo "Delivery Attempts: ".$member->DeliveryAttempts."<br/>"; 
    echo "</p>"; 
    } 

但它無法正常工作。如果$ xml被轉換成JSON或數組,我也可以。無論哪種方法最適合遍歷XML以顯示DeliveryAttempts。

+0

var_dump($ result)'產生什麼? –

+1

它說「array(0){}」 – johnwhitney

+0

現在做var_dump($ resp); –

回答

0

這是由於XML命名空間。做這樣的事情:

$xml->registerXPathNamespace('ses', 'http://ses.amazonaws.com/doc/2010-12-01/'); 
$result = $x->xpath('//ses:member') ; 
+0

這工作。謝謝! – johnwhitney

0

嘗試

foreach ($result as $member) { 
    ... 
} 

代替。

+0

這沒有奏效 – johnwhitney

+0

考慮到上面的評論,你沒有得到xpath的結果,所以foreach循環沒有任何數據可供使用 –

+0

是的,但如上所示(在xml和原始字符串),數據在那裏,有些語法格式不正確,或者PHP是fubar。 – johnwhitney