【发布时间】:2022-01-06 17:40:22
【问题描述】:
我有一个带有 USER_DEFINED 参数的 XML 文件,我正在尝试解析它。这是 XML 文档的示例。
<userDefinedParameters>
<USER_DEFINED parameter="P1">LEFT</USER_DEFINED>
<USER_DEFINED parameter="P2">RIGHT</USER_DEFINED>
<USER_DEFINED parameter="P3">1234</USER_DEFINED>
<USER_DEFINED parameter="P4">5678</USER_DEFINED>
</userDefinedParameters>
</data>
</segment>
</body>
</head>
我可以使用XML 包和xpathApply 解析出该文件中的所有数据。但是,我无法通过这种方式提取 USER_DEFINED 参数值。
由于 XML 中有几条记录,我想获取所有 P1、P2 等,因为我使用 xpathApply 获取其他字段。 document 声明所有 USER_DEFINED 参数都是“参数”和“值”,所以我认为我需要拉为 c('parameter', 'value'),但我不知道如何使用 XML 来做到这一点。
我看过this SO page,它有很大帮助,但没有回答这个问题。
感谢您的任何/所有帮助。
更新了所需的输出以及我尝试获取数据的方式。请注意,以下代码无法正常工作。
当前xpathApply 使用获取userDefinedParameters 部分中的所有USER_DEFINED 行。如果我更改为xpathApply(data, "//USER_DEFINED"), xmlValue),那么我将获得所有值,但与参数名称无关。我需要xpathApply(data, "//USER_DEFINED/P1"), xmlValue) 之类的东西,但显然这行不通。
Library(XML)
fileName <- "./file.xml"
data <- xmlParse(fileName)
xml_data <- xmlToList(data)
p1 <- xpathApply(data, "//USER_DEFINED")
p2 <- xpathApply(data, "//USER_DEFINED")
# View(p1)
# "P1"
# LEFT
# LEFT
# RIGHT
# View(p2)
# "P2"
# RIGHT
# RIGHT
# LEFT
# ...
【问题讨论】: