使用R和XML包,我正在解析巨大的XML文件。现在,作为数据处理的一部分,在一长串节点中,每个节点有多少个具有特定名称的子代(节点数可以超过20.000)
我目前的方法是:
nChildrenWithName <- xpathSApply(doc, path="/path/to/node/*", namespaces=ns, xmlName) == 'NAME'
nChildren <- xpathSApply(doc, path="/path/to/node", namespaces=ns, fun=xmlSize)
nID <- sapply(split(nChildrenWithName, rep(seq(along=nChildren), nChildren)), sum)
据我所知它是矢量化的。我仍然感觉可以使用正确的XPATH表达式在单个调用中实现。虽然我对XPATH的了解有限,所以如果有人知道如何做,我将不胜感激。
最好的托马斯
最佳答案
library(XML)
doc <- xmlTreeParse(
system.file("exampleData", "mtcars.xml", package="XML"),
useInternalNodes=TRUE )
xpathApply(xmlRoot(doc),path="count(//variable)",xmlValue)
关于xml - 使用XML和R有效地获取具有特定名称的子代数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15948339/