2014-02-18 60 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