将XMLInternalDocument转换为字符向量

时间:2014-02-18 10:51:00

标签: xml r

将对象从{XML}包转换回“普通”R字符向量的最佳方法是什么?

例如:

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)

但这似乎是一条迂回的路线。但是,我没有找到任何其他适当的方法。这已经困扰了我几次。

2 个答案:

答案 0 :(得分:8)

如果您只想要一个角色向量,请使用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")

答案 1 :(得分:1)

我认为您可以使用do.call(paste, as.list(capture.output(doc)))

实现这一目标

(我也遇到了一些问题,我认为你可以和sapply一起做,因为@flodel在节点NodeSet as character上建议我这样做了)