假设我们有以下XML文件:
<XML>
<A>
<B>
<ID>1</ID>
</B>
<C>
<D>10</D>
<D>20</D>
</C>
</A>
<A>
<B>
<ID>2</ID>
</B>
<C>
<D>30</D>
<D>50</D>
</C>
</A>
</XML>
&#13;
现在我想通过使用&#34; R&#34;来获取它的表格(数据框或列表)。 (使用&#34; xpathSApply&#34;),ID为第一列,以及相关的&#34; D&#34; s的总和。因此,在此示例中,结果应如下所示:
ID | sum(D)
----+--------
1 | 30
2 | 80
&#13;
xml文件只是一个例子。实际上它包含更多元素,每个A元素的D元素数量是可变的。
非常感谢!! :)
答案 0 :(得分:1)
你可以尝试
library(XML)
lst <- xmlToList('file.xml')
do.call(rbind,lapply(lst, function(x) {x1 <- unlist(x)
data.frame(ID=x1[1], Sum_D=sum(as.numeric(x1[-1])))}))
# ID Sum_D
#A 1 30
#A1 2 80
或者可能是D
元素的长度是相同的
xl <- xmlParse('file.xml')
ID <- xpathSApply(xl, '//ID', xmlValue)
Sum_D <- colSums(matrix(as.numeric(xpathSApply(xl, '//D',
xmlValue)), ncol=length(ID)))
data.frame(ID, Sum_D)
# ID Sum_D
#1 1 30
#2 2 80