2014-01-08 127 views
-1

我想解析一個XML,這是一些ocassions有相同的名稱標記的元素。例如:如何使用SimpleXML訪問具有相同名稱的兩個XML元素?

<Event Region="xxx" RegionName="xxx"> 
<Id>xxx</Id> 
<Name>xxx</Name> 
<Price Name="V" ProductMessage="" ServiceCharge="xx">xx</Price> 
<Price Name="A" ProductMessage="" ServiceCharge="xx">xx</Price> 
<URL>xxx</URL> 
<Date>xxx</Date> 
<GMTOffset>-x</GMTOffset> 
<StartTime>xx</StartTime> 
<EndTime>xxx</EndTime> 
</event> 

在這種情況下Price是重複的,在另外一些國家只有一個Price。 有沒有辦法檢索Price的計數並單獨訪問每個計數?

感謝您的任何提示!

+0

你是指'...->價格[0]'和'...->價格[1]'? –

+0

嗨,Alvaro,我嘗試過,並沒有這麼做,所以我認爲必須有其他方式。我應該如何訪問每一個?例如'$ event-> Event [$ i] - > Price [0]'? – JordanBelf

+0

該語法[should work](http://es1.php.net/manual/en/simplexml.examples-basic.php#example-5485)。也許你的代碼不正確: - ? –

回答

2

使用SimpleXML

$xml = new SimpleXMLElement($data); //Where $data represents your XML string 
foreach($xml->Price as $price) echo (string)$price . '<br>'; 
+0

謝謝!出於某種原因,這一個工程,而其他代碼沒有。我將繼續調查爲什麼其他方法不起作用 – JordanBelf

+0

SimpleXML的一大竅門是對輸出進行類型轉換,以便獲取元素的值而不是保存元素的對象。 – Machavity

0

由於documented,你可以把重複的元素數組項:

$xml = simplexml_load_string('<Event Region="xxx" RegionName="xxx"> 
<Id>xxx</Id> 
<Name>xxx</Name> 
<Price Name="V" ProductMessage="" ServiceCharge="xx">a</Price> 
<Price Name="A" ProductMessage="" ServiceCharge="xx">b</Price> 
<URL>xxx</URL> 
<Date>xxx</Date> 
<GMTOffset>-x</GMTOffset> 
<StartTime>xx</StartTime> 
<EndTime>xxx</EndTime> 
</Event>'); 

echo $xml->Price[0] . PHP_EOL; 
echo $xml->Price[1] . PHP_EOL; 
a 
b 

(我已經固定的數據樣本,使其有效的XML。 )

+0

謝謝阿爾瓦羅,我現在正在檢查。 – JordanBelf

相關問題