空手道:XML 元素更改为具有空命名空间

2024-04-04

当 xml 消息定义如下时,karate 会向子元素添加空名称空间。

空手道功能

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>[email protected] /cdn-cgi/l/email-protection</email>
    </request>
  </validateEmailAddressRequest>
</soapenv:Body>
</soapenv:Envelope>

    """
    * print x

Output

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>[email protected] /cdn-cgi/l/email-protection</email>
         </request>
      </validateEmailAddressRequest>
   </soapenv:Body>
</soapenv:Envelope>HTML report: (paste into browser to view) | Karate version: 0.9.4

如果你看<request>输出中的元素现在具有空的命名空间,而功能中则没有。

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

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


这非常有趣,我刚刚尝试过,但根本没有看到这个问题。我的猜测是,您使用的 Java 运行时版本可能在 XML 库中存在一些错误。您能帮我们一个忙并使用此过程重现此问题吗?https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue- 并确保指定确切的操作系统 + 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 https://github.com/karatelabs/karate/issues/1587

* configure xmlNamespaceAware = true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

空手道:XML 元素更改为具有空命名空间 的相关文章

随机推荐