将XMLInternalDocument转换为字符向量。

6
什么是将来自{XML}包的对象转换回“普通”的R字符向量的最佳方法?
例如:
require(XML)
doc <- htmlParse("http://cran.r-project.org/web/packages/XML/index.html")
class(doc)
# [1] "HTMLInternalDocument" "HTMLInternalDocument" 
# "XMLInternalDocument"  "XMLAbstractDocument" 

此建议相似,我可以这样做:

doc.char <- capture.output(doc)

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

2个回答

9
如果您只需要一个字符向量,则使用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")

啊,谢谢你的解释。showMethodsas 就是我在寻找的。学到了东西。 - lukeA
非常感谢@Martin Morgan。 - jay_phate

1

我认为你可以通过 do.call(paste, as.list(capture.output(doc))) 来实现这个目标。

(我也遇到了一些问题,我认为你可以像 @flodel 在这里 NodeSet as character 建议我的那样使用 sapply 来解决问题。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接