在R xmlGetAttr中的一个语句中选择多个元素?

时间:2012-10-03 08:40:27

标签: r

我可以写xmlGetAttr(x,"title")xmlGetAttr(x,"href")来获取“标题”和“href”的附加信息,
我能把两个陈述合二为一吗? xmlGetAttr(x,c("title","href"))无效。{ [[name]]中的错误:尝试选择多个元素

2 个答案:

答案 0 :(得分:1)

您可以使用xmlAttrs

xmlAttrs(x)[c("title","href")]

作为一个例子:

require(XML)
udata<-htmlParse('http://cran.r-project.org/')
frames<-getNodeSet(udata,'//*/frame')
# > xmlAttrs(frames[[1]])[c('src','name')]
#         src        name 
# "logo.html"      "logo" 

答案 1 :(得分:0)

getNodeSetxpathApply中的路径可以是包含多个元素的字符向量

attrs <- c("src", "name")
paths <- sprintf("//frame/@%s", attrs)

所以使用@ user1609452的有用的可重现的例子

require(XML)
udata<-htmlParse('http://cran.r-project.org/')
vals <- xpathSApply(udata, paths)

然后例如

matrix(vals, ncol=length(attrs), byrow=TRUE, dimnames=list(NULL, attrs))

导致

> matrix(vals, ncol=length(attrs), byrow=TRUE, dimnames=list(NULL, attrs))
     src            name      
[1,] "logo.html"    "logo"    
[2,] "navbar.html"  "contents"
[3,] "banner.shtml" "banner"