2014-02-18 92 views
5

{XML}包中的對象轉換回「正常」R字符向量的最佳方式是什麼?將XMLInternalDocument轉換爲字符向量

例如:

require(XML) 
doc <- htmlParse("http://cran.r-project.org/web/packages/XML/index.html") 
class(doc) 
# [1] "HTMLInternalDocument" "HTMLInternalDocument" 
# "XMLInternalDocument" "XMLAbstractDocument" 

類似this建議,我可以這樣做:

doc.char <- capture.output(doc) 

但是,這似乎是一個迂迴路線。但是,我沒有找到任何其他適當的方法。這讓我煩惱了幾次。

回答

7

如果你只是想要一個字符向量然後使用readLines()而不是htmlParse()。但可能您有更具體的需求,然後答案是使用XPath查詢doc;請參閱?getNodeSet(和語法doc["//path"])以及該幫助頁面上的示例。

爲了您的具體問題,我沒有

library(XML) 
doc <- htmlParse("http://cran.r-project.org/web/packages/XML/index.html") 
showMethods(class=class(doc), where=search()) 

,抵達

as(doc, "character") 
+0

啊謝謝你的解釋。 'showMethods'和'as'就是我一直在尋找的東西。學會了...... – lukeA

+0

非常感謝@Martin Morgan –

1

我認爲你可以做到這一點do.call(paste, as.list(capture.output(doc)))

(我有一些問題也是一樣,我認爲你可以sapply做到這一點,以及@flodel建議我在這裏上的節點NodeSet as character

+0

有趣,感謝朱利安。 – lukeA