R :将 XML 解析为所需的映射表 [英] R : Parsing XML to a desired mapping table

查看:19
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆