如何在没有任何逗号或方括号的情况下获取XPath结果?

时间:2016-01-12 22:13:01

标签: xml xpath soapui

我有一个代码如:

<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

3 个答案:

答案 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

你要求。