2014-02-13 6 views
0

У меня есть XML см ниже примерR: Получить значение атрибута из XML

<params> 
<param id='1'>BEN</param> 
<param id='2'>DAN</param> 
<param id='3'>RYE</param> 
    <param id='3'>RYE</param> 
    <param id='3'>RYE</param> 
</params> 

Как я могу получить все из параметров с атрибутом ID = 3?

Ниже то, что я сделал до сих пор: xmlinfile является файл XML

inxml = xmlTreeParse(xmlinfile, handlers=list("comment"=function(x,...){NULL}), asTree = TRUE) 
xmlList = xmlToList(inxml); 
params = xmlList$'params' 

Спасибо заранее.

ответ

1

Вам необходимо использовать функцию xpathApply с аргументом xmlValue (чтобы получить значение, в противном случае xmlAttrs, чтобы получить атрибут). Путь должен быть указан в следующем синтаксисе: "//tag[@attribute='value']".

a <- xmlParse('<params> 
<param id='1'>BEN</param> 
<param id='2'>DAN</param> 
<param id='3'>RYE</param> 
    <param id='3'>RYE</param> 
    <param id='3'>RYE</param> 
</params>') 
xpathApply(a,"//param[@id='3']",xmlValue) 
[[1]] 
[1] "RYE" 

[[2]] 
[1] "RYE" 

[[3]] 
[1] "RYE" 

Аналогично xpathSApply воля дает вектор величины, когда это возможно:

xpathSApply(a,"//param[@id='3']",xmlValue) 
[1] "RYE" "RYE" "RYE" 
+0

Спасибо за ваш ответ. :) – Ianthe

0
xmlinfile <- paste(readLines(n=7), collapse="\n") 
<params> 
    <param id='1'>BEN</param> 
    <param id='2'>DAN</param> 
    <param id='3'>RYE</param> 
    <param id='3'>RYE</param> 
    <param id='3'>RYE</param> 
</params> 
library(XML) 
xpathApply(xmlParse(xmlinfile), "/params/param[@id='3']", xmlValue) 
# [[1]] 
# [1] "RYE" 
# 
# [[2]] 
# [1] "RYE" 
# 
# [[3]] 
# [1] "RYE 
+0

Спасибо за ваш ответ – Ianthe

Смежные вопросы