2012-12-24 65 views
1

我有一個從外部URL http://www.xmlcharts.com/cache/precious-metals.xml如何從這個XML取值

<prices> 
<pricelist currency="usd"> 
<price timestamp="1356079920" per="ozt" commodity="gold">1649.45</price> 
<price timestamp="1356079680" per="ozt" commodity="palladium">676.00</price> 
<price timestamp="1356079740" per="ozt" commodity="platinum">1553.75</price> 
<price timestamp="1356079860" per="ozt" commodity="silver">29.95</price> 
</pricelist> 
<pricelist currency="eur"> 
<price timestamp="1356079920" per="ozt" commodity="gold">1248.80</price> 
<price timestamp="1356079680" per="ozt" commodity="palladium">511.80</price> 
<price timestamp="1356079740" per="ozt" commodity="platinum">1176.34</price> 
<price timestamp="1356079860" per="ozt" commodity="silver">22.68</price> 
</pricelist> 
<pricelist currency="chf"> 
<price timestamp="1356079920" per="ozt" commodity="gold">1507.76</price> 
<price timestamp="1356079680" per="ozt" commodity="palladium">617.93</price> 
<price timestamp="1356079740" per="ozt" commodity="platinum">1420.28</price> 
<price timestamp="1356079860" per="ozt" commodity="silver">27.38</price> 
</pricelist> 
</prices> 

我已經通過

$xmlobj = simplexml_load_file($feedurl); 
print_r($xmlobj->pricelist); 

它使用PHP加載此XML文件給輸出,如:

SimpleXMLElement Object ([pricelist] => Array ([0] => SimpleXMLElement Object ([@attributes] => Array ([currency] => usd) [price] => Array ([0] => 1649.45 [1] => 676.00 [2] => 1553.75 [3] => 29.95)) [1] => SimpleXMLElement Object ([@attributes] => Array ([currency] => eur) [price] => Array ([0] => 1248.80 [1] => 511.80 [2] => 1176.34 [3] => 22.68)) [2] => SimpleXMLElement Object ([@attributes] => Array ([currency] => chf) [price] => Array ([0] => 1507.76 [1] => 617.93 [2] => 1420.28 [3] => 27.38)))) 

我已經試過$xmlobj->pricelist,但不能得到價格價值...

+0

@JanHančič任何理由否決了.... – ravisoni

+0

我沒有投下來你。 –

回答

2
$xml = simplexml_load_file('http://www.xmlcharts.com/cache/precious-metals.xml'); 

foreach($xml as $pricelist) { 
    // if($pricelist->attributes()->currency == 'usd') 
    foreach($pricelist as $price) { 
     echo $price[0].' '; 
    } 
} 
+0

感謝答覆..但如果我只是想要美元價格怎麼辦... – ravisoni

+0

請參閱編輯後 – vlcekmi3

0

如果你真的檢查你的輸出從print_r($xmlobj->pricelist);你可以看到它抓住每個項目的價格。嘗試通過將pricelist作爲對象來訪問價格。訪問價格通過:$xmlobj->pricelist->price[1],看看是否有效。

我這樣說是因爲$xmlobj->pricelist->price數組包含你正在尋找的機器人。

+0

nope它什麼也沒給... – ravisoni

+0

哎呀。試試'$ xmlobj-> pricelist-> price'數組。 – L0j1k

+0

$ xmlobj-> pricelist->價格Gives-> SimpleXMLElement對象()...;( – ravisoni

0
$load_xml = simplexml_load_file("http://www.xmlcharts.com/cache/precious-metals.xml"); 
echo $load_xml->pricelist[0]->price[0]; //is gold 

echo $load_xml->pricelist[0]->price[1]; //is palladium 
echo $load_xml->pricelist[0]->price[2]; //is platinum 
echo $load_xml->pricelist[0]->price[3]; //is silver