如何创建包含 xml prolog 声明的消息

How to create a message containing xml prolog declaration

我正在尝试创建一些动态 xml 消息,这些消息将被发送到需要 xml 的服务。所述服务还需要指定 xml 序言。

因为我想对 xml 进行大量操作,所以我正在以原生 xml 类型阅读它,但是空手道似乎在 xml 过程中丢失了 xml 序言信息转换(在 0.9.5 和 0.9.6.RC3 上)

Feature: Example

    # https://www.w3.org/TR/xml/#sec-prolog-dtd
    Scenario: Example
      Given def nativeXML =
      """
      <?xml version="1.0" encoding="UTF-8" ?>
      <greeting>Hello world</greeting>
      """
      When string nativeToString = nativeXML
      * print nativeToString
      Then assert nativeToString.contains("encoding")

有没有办法保留 xml 序言?

可在此处找到重现此代码的代码:https://github.com/KostasKgr/karate-issues/blob/xml_prolog_to_string/src/test/java/examples/example.feature

亲切的问候

目前没有其他办法,只能手动添加,IMO 很简单。空手道在字符串转换期间默认删除它,因为它在节点操作期间会妨碍。

Given def temp =
"""
<?xml version="1.0" encoding="UTF-8" ?>
<greeting>Hello world</greeting>
"""
* string body = temp
* def body = '<?xml version="1.0" encoding="UTF-8" ?>' + body
* print body
Then assert body.contains("encoding")