能否通过单个XPath查询拼接两个节点取值?附示例XML及预期输出
实现方案
该需求可以实现,具体写法根据你使用的XPath版本有所区分:
XPath 2.0及以上版本(主流解析器均支持)
直接使用以下单条XPath语句即可完全匹配你的预期输出:
/Resources/Resource/concat(UID, ',', Name)
这条语句会遍历所有Resource节点,对每个节点分别拼接其子节点UID、逗号、Name的文本值,最终返回两个拼接好的字符串序列,和你给出的预期输出完全一致。
仅支持XPath 1.0的场景
XPath 1.0不支持直接返回多组拼接后的字符串序列,有两种可选方案:
- 外层遍历所有
Resource节点,对每个节点执行以下查询获取当前节点的拼接结果:concat(UID, ',', Name) - 纯XPath 1.0一次性返回所有结果(返回值为所有拼接结果用空格分隔的单个字符串,后续自行拆分即可):
concat(//Resource[1]/UID, ',', //Resource[1]/Name, ' ', //Resource[2]/UID, ',', //Resource[2]/Name)
内容的提问来源于stack exchange,提问作者Riyas Hussain
相关产品推荐
相关产品推荐

