我是一個XML新手,試圖抓取和分析以下RSS源http://xml.newsbox.ch/corporate_web/che/dufry/digest_en_year_2015_atom.xml。除了這一點,我遇到了兩個問題:在R中分析具有可變XML結構的RSS源
1)我想提取的分析的文檔使用xmlChildren
個別新聞報道的節點如下:
library(RCurl)
library(XML)
xml.url <- "http://xml.newsbox.ch/corporate_web/che/dufry/digest_en_year_2015_atom.xml"
script <- getURL(xml.url)
doc <- xmlParse(script)
doc.children = xpathApply(doc,"//entry",xmlChildren)
雖然這個程序運作良好其他飼料,其中各個新聞發佈與節點<items>
一起存儲,其在節點<entry>
的這種特殊情況下不起作用,因爲它返回空列表。我被困在這裏,因爲我無法弄清楚我在XML文檔結構中錯過了什麼。
2)更一般地說:當XML結構在節點<item>
或節點<entry>
中包含單個新聞故事時,是否可以實現這種方法來處理這兩種情況,而無需事先知道特定的結構?
任何幫助非常感謝,謝謝。
謝謝,這個作品很棒!我不知道boolean()XPath運算符,但我認爲'xpathApply(doc,「boolean(// x:entry)」,namespaces = ns)'在這裏完成這項工作。 – Nico21
感興趣:'xpathApply(doc,「// x:entry」,xmlChildren,namespaces = ns)'效果很好。但是,在其他情況下(https://www.barry-callebaut.com/news/rss.xml),當xpathApply(doc,「// item」,xmlChildren)「運行良好時,xpathApply(doc, 「// x:item」,xmlChildren,namespaces = ns)'返回一個空列表。有沒有辦法一般地告訴什麼時候使用命名空間? – Nico21
我想這種行爲可以歸因於默認命名空間與非默認命名空間,因爲'xmlNamespaceDefinitions'在前一種情況下返回'「」''。 – Nico21