Как создать сообщение, содержащее xml объявление пролога - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь создать несколько динамических c 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

С уважением

1 Ответ

0 голосов
/ 13 июля 2020

Прямо сейчас нет другого пути, кроме как добавить его вручную, что IMO достаточно просто. Karate удаляет его по умолчанию во время преобразования строки, потому что он мешает во время операций узла.

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")
...