【问题标题】:Default namespaces in soapUI XPath assertionssoapUI XPath 断言中的默认命名空间
【发布时间】:2018-09-25 17:53:15
【问题描述】:

我正在尝试在 soapUI 中针对以下 XML 创建 XPath Match 断言,以查看元素是否存在:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <ns2:executeResponse xmlns:ns2="http://ws.namf09.anzlic.org.au">
         <responses id="?" xmlns="http://namf09.anzlic.org.au">
            <result status="OK" completed="true" hasErrorsInResponseElements="false"/>
            <response id="200.1">
               <responseResult>
                  <address>
                     <streetNumber1>2</streetNumber1>
                     <streetName>sydney</streetName>
                     <streetType>SQ</streetType>
                     <localityName>sydney</localityName>
                     <stateTerritory>NSW</stateTerritory>
                     <postcode>2000</postcode>
                  </address>
               </responseResult>
            </response>
         </responses>
      </ns2:executeResponse>
   </soapenv:Body>
</soapenv:Envelope>

我的第一次尝试是boolean(//address),soapUI 说这是错误的。但是,当我让soapUI 为我计算出命名空间时,它提出了:

declare namespace ns2='http://ws.namf09.anzlic.org.au';
declare namespace ns1='http://namf09.anzlic.org.au';
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
boolean(//ns1:address)

这可行,但我不明白 ns1 命名空间的来源。我认为这是默认设置,但是如果没有soapUI,我怎么能解决这个问题呢?

【问题讨论】:

    标签: xpath soapui


    【解决方案1】:

    XML 文档中的命名空间前缀不必与断言中的命名空间前缀相同。这是必须匹配的 URI。在默认命名空间的情况下,URI 仍然必须匹配,因此您必须在 XPath/XQuery 中调用它something

    在您的 XML 文档中,&lt;address&gt; 元素位于 http://namf09.anzlic.org.au 命名空间中,该命名空间指的是国家地址管理框架。

    为了给那个 URI 一个有意义的名字,而不是像 ns1 这样的纯粹随机的名字,我们称之为namf

    declare namespace namf='http://namf09.anzlic.org.au';
    boolean(//namf:address)
    

    【讨论】:

      【解决方案2】:

      nsX 是 SoapUI 从响应中生成的默认命名空间。

      要评估 xPath 表达式,您需要一个能够运行 xPath 函数的编辑器。 试试这个在线解析器:

      https://www.freeformatter.com/xpath-tester.html#ad-output

      这些函数 (API) 也可用于 Java 等程序语言:

      What's a simple way in java to evaluate an xpath on a string and return a result string

      【讨论】:

        猜你喜欢
        • 2017-12-16
        • 1970-01-01
        • 2013-06-23
        • 2010-10-07
        • 1970-01-01
        • 1970-01-01
        • 2011-08-31
        • 2010-10-09
        相关资源
        最近更新 更多