XQuery如何为重复字段返回的多个值添加指定分隔符
问题根因
你之前尝试的两个写法都没生效,核心是函数选型错误:
tokenize()的作用是把单个字符串按规则拆分成序列,和你要的「多值拼接为单个字符串」的需求完全反向replace()仅能对单个字符串做字符替换,当你传入匹配到的多个节点组成的序列时,它只会处理第一个节点的内容;且单节点值不存在空格时不会产生任何变化,根本覆盖不了多节点匹配的场景。
可用方案
直接使用XPath 2.0+ 原生提供的string-join()函数即可,这个函数专门用于将序列中的所有值按指定分隔符拼接,单值、多值场景都能自动适配:
string-join(/*:ShippedUnit/*:Containment/*:ContainerManifest/*:Consignments/*:Consignment/*:ConsignmentHeader/*:ConsignmentRef, '|')
效果说明
- 多节点场景:匹配到3个节点值分别为
CBR123、CBR678、CBR656时,返回结果为CBR123|CBR678|CBR656,和预期完全一致 - 单节点场景:仅匹配到1个值时,直接返回节点原值,不会拼接多余的分隔符
内容的提问来源于stack exchange,提问作者Rashmita Purkayastha
相关产品推荐
相关产品推荐

