我用R解析了一个XML文档,例如:
library(XML)
f = system.file("exampleData", "mtcars.xml", package="XML")
doc = xmlParse(f)
Run Code Online (Sandbox Code Playgroud)
使用XPath表达式,我可以选择文档中的特定节点:
> getNodeSet(doc, "//record[@id='Mazda RX4']/text()")
[[1]]
21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
attr(,"class")
[1] "XMLNodeSet"
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何将结果转换为R字符向量:
> as.character(getNodeSet(doc, "//record[@id='Mazda RX4']/text()"))
[1] "<pointer: 0x000000000e6a7fe0>"
Run Code Online (Sandbox Code Playgroud)
如何从内部指针获取文本到C对象?
使用xmlValue.这是您的示例的扩展,以帮助您查看类是什么:
v <- getNodeSet(doc, "//record[@id='Mazda RX4']/text()")
str(v)
#List of 1
#$ :Classes 'XMLInternalTextNode', 'XMLInternalNode', 'XMLAbstractNode' <externalptr>
#- attr(*, "class")= chr "XMLNodeSet"
v2 <- sapply(v, xmlValue) #this is the code chunk of interest to you
v2
#[1] " 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4"
str(v2)
#chr " 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4"
Run Code Online (Sandbox Code Playgroud)