2013-08-26 129 views
0

我在我的主頁上加載了超過50個XML文件。一個例子結構,你可以在這裏看到:PHP XML快速閱讀

http://api.eve-central.com/api/marketstat?usesystem=30000142&hours=24&typeid=3683&minQ=10000

我需要的價格「賣」 - >「分鐘」。所以目前我運行了foreach()循環,並在獲取時停止。但是,我的網頁需要30秒以上來處理這個問題,我想我需要一個直接進入類似的數據:

$min = $xml -> children() -> children() -> sell -> min; 

誰能給我正確的arithmetik?

THX一步

+0

有沒有任何跡象表明這些數字多久更新一次?如果每分鐘都會考慮每分鐘緩存完成的頁面並提供服務。 – Cups

+0

這些「文件」實際上不是文件,但HTTP資源 - 下載50個文件只需要一定的時間。正如@Cups所說,看看你是否可以緩存這些文件,而不是每次都讀取它們。 – CBroe

回答

1

使用simplexml_load_file功能。它非常簡單快捷!

$xml = simplexml_load_file('http://api.eve-central.com/api/marketstat?usesystem=30000142&hours=24&typeid=3683&minQ=10000'); 

echo $xml->marketstat->type->sell->min; // 257.99 

而且SimpleXMLElementfile_get_contents

$xml_str = file_get_contents('http://api.eve-central.com/api/marketstat?usesystem=30000142&hours=24&typeid=3683&minQ=10000'); 
$xml = new SimpleXMLElement($xml_str); 

echo $xml->marketstat->type->sell->min; // 257.99 
+0

+1 Thx這就是我搜索,但它並沒有讓我的代碼更快:(它也需要30秒加載這些文件的57,這是正常的嗎?57我的數據加載相同的方式就像你表演,我想其最快的方法或? –

+0

'simplexml'是我知道的最好的xml解析器之一。 – Bora

+0

ok thx很多!!!我保存數據並通過cronjobs更新它,所以我的問題解決了! –

0

有趣的是,我也與目前的前夕,中央API的工作。 雖然我不得不給你一個很好的提示,但eve-central允許你傳遞多個項目的請求。

http://api.eve-central.com/api/marketstat?typeid=3683&typeid=3684&typeid=3685&typeid=3686&typeid=3687&typeid=3688&typeid=3689&usesystem=30000142&hours=24&minQ=10000

這樣。

建立一個很好的循環,獲取所有你想要的id,並讓它構建一個像這樣的url。 一旦完成添加所有的& typeid =,添加& usesystem = 30000142 & hours = 24 & minQ = 10000它並執行simplexml_load_file(你的url的名稱在這裏);

現在,您可以對xml輸出做一次foreach,您可以立即獲得所有您想要的所有項目。