【问题标题】:Karate: XML element changed to have empty namespace空手道:XML 元素更改为具有空命名空间
【发布时间】:2019-07-15 15:04:28
【问题描述】:

当 xml 消息定义如下时,空手道将空命名空间添加到子元素。

空手道功能

Feature: test xml
  Scenario: test xml empty namespace
    * def x =
    """
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
  <validateEmailAddressRequest xmlns="anotherUri">
    <request>
      <email>some@domain.com</email>
    </request>
  </validateEmailAddressRequest>
</soapenv:Body>
</soapenv:Envelope>

    """
    * print x

输出

16:39:17.009 [main] INFO com.intuit.karate - [print] <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <validateEmailAddressRequest xmlns="anotherUri">
         <request xmlns="">
            <email>some@domain.com</email>
         </request>
      </validateEmailAddressRequest>
   </soapenv:Body>
</soapenv:Envelope>HTML report: (paste into browser to view) | Karate version: 0.9.4

如果您查看输出中的 &lt;request&gt; 元素,它现在具有空命名空间,而功能中没有。

当 SOAP 请求到达服务器时,这确实会产生问题。

您知道为什么会出现这种行为以及如何覆盖它吗?

【问题讨论】:

    标签: karate


    【解决方案1】:

    这很有趣,我只是尝试过,根本没有发现这个问题。我的猜测是您使用的 Java 运行时版本可能在 XML 库中有一些错误。你能帮我们一个忙并使用这个过程复制这个问题吗? https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue - 并确保您指定准确的 OS + Java 版本。

    同时,作为一种解决方法,您可以这样做 - 将 XML 转换为字符串,执行 Java String.replace() 然后重新转换:

    * xmlstring x = x
    * xml x = x.replace(' xmlns=""', '')
    * print x
    

    编辑 - 这是提供解决方案的问题(在 1.2.0 及更高版本中可用)https://github.com/karatelabs/karate/issues/1587

    * configure xmlNamespaceAware = true
    

    【讨论】:

    • 你说得对。我尝试按照说明复制问题,但我做不到。我在项目中尝试了其他依赖项的问题,但没关系。所以我缩小了这个把它搞砸的依赖。 org.reficiosoap-builder 会更深入地了解究竟是什么原因造成的。非常感谢彼得。
    • @Peter 我正在使用空手道 1.2.0,使用时出现以下错误 * 配置 xmlNamespaceAware = true。意外的“配置”键:“xmlNamespaceAware”。我做错了什么?在发送请求之前在场景中使用它。
    • @Maddy 因为它还没有发布。您可以按照开发者指南确认它是否有效,或者您需要等待:github.com/karatelabs/karate/wiki/Developer-Guide
    • @Peter 我实际上使用的是空手道版本“1.2.0.RC4”,所以尽管它可能会在那个版本中发布。您计划何时发布 1.2.0 版?如果这个月能发布就太好了:)
    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多