到現在爲止我在做@simplexml_load_file
並在返回的XML我是xpath
得到XML,並用它在PHP
的網站會以最快的方式得到了很大的流量,它正在採取了大量的時間爲XML加載。
的主人告訴我嘗試get_file_contents
但我不知道怎麼做才能閱讀到返回的內容作爲XML對象做
他們說,試圖捲曲或WGET但對我來說是一樣的像第一個我堅持
我能做些什麼來獲得xml,儘可能從合作伙伴api獲得儘可能多的權利,並且仍然能夠將其作爲xml讀取?
到現在爲止我在做@simplexml_load_file
並在返回的XML我是xpath
得到XML,並用它在PHP
的網站會以最快的方式得到了很大的流量,它正在採取了大量的時間爲XML加載。
的主人告訴我嘗試get_file_contents
但我不知道怎麼做才能閱讀到返回的內容作爲XML對象做
他們說,試圖捲曲或WGET但對我來說是一樣的像第一個我堅持
我能做些什麼來獲得xml,儘可能從合作伙伴api獲得儘可能多的權利,並且仍然能夠將其作爲xml讀取?
這聽起來像是當您的數據處於字符串中時,您無法將XML轉換爲SimpleXML。使用simplexml_load_string
從file_get_contents
解析數據,或者如果您遠程獲取數據(通過cURL等)。
我最大的建議是不使用xpath
,因爲它確實會產生開銷;而只需引用標準對象語法中的元素:$xml->path->value
。
首先,在知道問題出現之前不要進行優化。 'simplexml_load_string'已經可以加載URL。您只需將它作爲文件傳遞,與許多其他PHP函數類似。 XPath確實施加了開銷,但範圍可以從小到重。我們需要更多信息。 – 2012-03-07 05:26:29
PHP中最快的XML庫是xmlreader。這實在是太晦澀(我認爲這對那些誰瞭解它,並能夠使用它很少PHP的用戶),但它是速度極快,因爲:
向XMLReader擴展是一個XML pull解析器。閱讀器充當向文檔流前進的光標,並停在路上的每個節點上。
這意味着XML文檔沒有完全預加載到內存中。只有當前分析的部分被加載到內存中。
「獲得xml的最快方式」是一個矛盾。
XML並不打算快,它的目的是兼容。
所以,如果你需要速度 - 你需要另一種格式。另一種方法。
這就是全部。
延伸閱讀:從Stackoveflow創始人的文章:Back to Basics by Joel Spolsky
如何用last.fm API做到這一點?它非常**,所以你不可能同步所有。 – jpic 2012-03-08 10:00:18
但是在某個地方我們需要使用XML,例如獲取和分析網站訂閱源!問題是要選擇讀取和處理XML文件的最佳方法。 – 2015-05-20 14:46:27
我明白的是你首先讀取該文件,然後
$字符串=的file_get_contents($文件); $ xml = simplexml_load_string($ string);
它會給你所有的XML節點。 讓假設你有這些節點
$target_node = $xml->NewsItem->NewsComponent->ContentItem;
if(isset($target_node))
{
foreach($target_node as $child)
{
//isset
$story_head = (array)$child->DataContent->CPOnlineFile->CPIndexStoryHead;
if(isset($story_head))
{
// go on further by looping and arrowing nodes you will get your desired output... i parse my xml by like this
}
}
}
它只是給你一個想法,你如何能做到這一點...
Here有一個很好的博客大約比較反對的SimpleXML和DOM的XMLWriter類測試結果表示當您使用XML文件並且使用大數據而不是其他解決方案時,XMLWriter類的速度更快。
XMLReader類在結果中與XMLWriter類非常相似。
我希望這有幫助。
什麼花時間?純*下載*或解析和提取信息*?我們在這裏說「多久」? – deceze 2012-03-07 05:20:05