Прямо сейчас нет другого пути, кроме как добавить его вручную, что 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")