使用XPATH解析以逗号分隔的字符串

时间:2014-02-15 15:39:27

标签: xml csv xpath

我有一个特殊情况,我想使用XPATH 1.0来解析这样的字符串:

  

RESP:0:MSISDN,46455381234:GPRS,PDPCONTEXT,APNID,1,PDPADD,136.225.1.1,EQOSID,1,PDPCONTEXT,APNID,2,PDPADD,136.225.1.2,EQOSID,2,VPAA,0:BAOC ,1:BOIEXH,1,1,46455381234,TS10,1,TS20;

该字符串包含以分号(;)分隔的部分,这些部分是简单的键值参数(例如MSISDN,46455381234)或由逗号分隔的复杂值(例如GPRS,PDPCONTEXT,APNID,1,...),参数为完全动态,没有特别的顺序。

所需的输出将是:

MSISDN,0
GPRS
- PDPCONTEXT
-- APNID,1
-- PDPADD,136.225.1.1
-- EQOSID,1
- PDPCONTEXT
-- APNID,2
-- PDPADD,136.225.1.2
-- EQOSID,2
BOIEXH
- TS10,1,46455381234
- TS20,1

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这个问题在XPath 1.0中无法解决,XPath 1.0只具有非常有限的字符串操作功能,并且缺乏执行循环甚至递归的支持。

如果您可以将XPath实现更改为更好/更新,请考虑一下:

  • 使用XQuery(无论哪个版本)都很有可能。
  • 在XPath 2.0中使用一些正则表达式对这个相当有限的嵌套集可能是有可能的,但你可能很难构建它。
  • 使用您正在使用的任何其他编程语言来调用XPath并在那里构建树。