我有一个代码如:
<out:a>
<out:Name Type="First" TypeCode="Best">JAE</out:Name>
<out:Name Type="Last" TypeCode="Best">ADAMS</out:Name>
</out:a>
当我将XPath表达式赋予
时(//*[local-name() = 'Name']/text())[1],(//*[local-name() = 'Name']/text())[2],
我的结果为[JAE,ADAMS]
如何提供XPath表达式以便我可以将结果显示为 JAE ADAMS ?
答案 0 :(得分:1)
您的问题不清楚您使用此XPath表达式的位置。
在大多数情况下,您可以使用以下内容:
concat(//*:Name[@Type='First'], " ", //*:Name[@Type='Last'])
在SoapUI XPath断言中,串联是自动执行的,所以只需简单:
${#Response#//*:Name[@Type='First']} ${#Response#//*:Name[@Type='Last'])}
(注意额外的空间)将起作用。
答案 1 :(得分:0)
可能string-join
会这样做。尝试:
string-join( ((//*[local-name() = 'Name']/text())[1],(//*[local-name() = 'Name']/text())[2]), ' ' )
或
string-join( (//*[local-name() = 'Name']/text())[position() le 2], ' ' )
或
string-join( subsequence( //*[local-name() = 'Name']/text(), 1, 2), ' ')
答案 2 :(得分:0)
逗号和方括号是表示结果是节点集或序列的表示法。您显然更喜欢 字符串 。
但是,首先请注意您的XML格式不正确;它使用未声明的命名空间前缀。以下是您修复的XML格式正确:
<out:a xmlns:out="example.com/out">
<out:Name Type="First" TypeCode="Best">JAE</out:Name>
<out:Name Type="Last" TypeCode="Best">ADAMS</out:Name>
</out:a>
然后,任何这些XPath表达式
XPath 1.0
concat(/*/*[1], ' ', /*/*[2])
XPath 1.0 (名称空间负责)
concat(//out:Name[1], ' ', //out:Name[2])
XPath 2.0
string-join(/*/*, ' ')
XPath 2.0
string-join(normalize-space(), ' ')
将产生 字符串
JAE ADAMS
你要求。