R :将 XML 解析为所需的映射表 [英] R : Parsing XML to a desired mapping table
本文介绍了R :将 XML 解析为所需的映射表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个示例格式如下的 XML,需要生成一个映射表.
I have a XML with sample format below, and need to generate a mapping table.
<params>
<parm suffix="1">A</parm>
<parm suffix="2">B</parm>
<parm suffix="3">C</parm>
<parm suffix="4">D</parm>
<parm suffix="5">E</parm>
<params>
期望输出是:参数值(A、B、C...)映射到组合参数&后缀(A_1、B_2、C_3...)
Desire output is: parm value (A, B, C...) mapped to a combined parm & suffix (A_1, B_2, C_3...)
A -> A_1
B -> B_2
C -> C_3
D -> D_4
E -> E_5
任何类型的格式都可以,只要我可以像 parmList["A"] 那样检索 A_1.先谢谢了.
Any type of format will do, as long as I can retrieve the A_1 like parmList["A"]. Thanks ahead.
推荐答案
类似:
library(XML)
xmltest <- "<params>
<parm suffix=\"1\">A</parm>
<parm suffix=\"2\">B</parm>
<parm suffix=\"3\">C</parm>
<parm suffix=\"4\">D</parm>
<parm suffix=\"5\">E</parm>
</params>"
xmlout <- xmlInternalTreeParse(xmltest)
outattrs <- xpathApply(xmlout,"//params/parm",xmlGetAttr,"suffix")
outval <- xpathApply(xmlout,"//params/parm",xmlValue)
parmList <- setNames(Map(paste, outval, outattrs, sep="_"),outval)
#$A
#[1] "A_1"
#$B
#[1] "B_2"
#$C
#[1] "C_3"
#$D
#[1] "D_4"
#$E
#[1] "E_5"
parmList[["A"]]
#[1] "A_1"
使用 XPath 的简化:
A simplification using XPath's instead:
Map(
paste,
sapply(xmlout["//params//parm"], xmlValue),
xmlout["//params//parm//@suffix"],
sep="_"
)
这篇关于R :将 XML 解析为所需的映射表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文