NodeSet作为字符

时间:2014-02-13 11:15:37

标签: r

我希望使用getNodeSet包中的XML函数获取NodeSet,并将其作为文本写入文件中。

例如:

> getNodeSet(htmlParse("http://www.google.fr/"), "//div[@id='hplogo']")[[1]]
<div title="Google" align="left" id="hplogo" onload="window.lol&amp;&amp;lol()" style="height:110px;width:276px;background:url(/images/srpr/logo9w.png) no-repeat">
    <div nowrap="" style="color:#777;font-size:16px;font-weight:bold;position:relative;top:70px;left:218px">France</div>
</div> 

我想在文件中保存所有这个节点。

问题是我们不能直接用以下方法编写对象:

write.lines(getNodeSet(...), file)

as.character(getNodeSet(...))返回一个C指针。

我该怎么做?谢谢。

3 个答案:

答案 0 :(得分:3)

要将XML对象保存到文件,请使用saveXML,例如

url = "http://www.google.fr/"
nodes = getNodeSet(htmlParse(url), "//div[@id='hplogo']")[[1]]
fl <- saveXML(nodes, tempfile())
readLines(fl)

答案 1 :(得分:1)

必须有更好的方法,在那之前你可以捕获XMLNode输出的print方法:

nodes <- getNodeSet(...)
sapply(nodes, function(x)paste(capture.output(print(x)), collapse = ""))

答案 2 :(得分:0)

我知道这可能有点过时了,但是我遇到了同样的问题,并希望将其留作参考,在搜索并努力解决之后,答案很简单:

htmlnodes <- toString(nodes)
write.lines(htmlnodes, file)