2012-10-03 65 views
3

我可以寫xmlGetAttr(x,"title")xmlGetAttr(x,"href")以獲得atttributions「title」和「href」,
我可以將兩個語句合併爲一個嗎?
xmlGetAttr(x,c("title","href"))無法正常工作。
錯誤在[[名稱]]:嘗試選擇一個以上的元素在R xmlGetAttr的一個語句中選擇多個元素?

回答

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" 
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"