空手道响应 xml 未解析,并表示不是 XML

Karate Response xml is not parsing and says not XML

提问人:rev gan 提问时间:9/14/2023 更新时间:9/16/2023 访问量:31

问:

我有一个功能,可以返回xml格式的响应

响应 xml:

内容类型:application/xop+xml 内容传输编码:二进制

<肥皂:信封> <肥皂:身体> .. .. </肥皂:身体> </肥皂:信封>

当我尝试读取karate.xmlPath(response)时,空手道抛出错误而不是XML或无法转换

我该如何忽略在响应中收到的额外行,其中包含阻止空手道读取为有效 xml 的 Content-Type

XML 解析 标头 响应 空手道

评论

0赞 LMC 9/14/2023
需要额外的处理,因为它是二进制编码的 XML,因此 .我猜karate.xmlPath()需要纯字符串。Content-Transfer-Encoding: binaryapplication/xop+xml
0赞 rev gan 9/14/2023
我手动删除了那些额外的不需要的字符串并转换为 xml 并传递给 karate.xmlPath,它现在被识别了。感谢您的输入!!
0赞 LMC 9/14/2023
你能把空手道特定的代码添加到问题中吗?似乎它将来可能对其他人有用。此外,请注意这些标头,因为它们可能不是“不需要的”,而是需要正确解析某些响应。您还可以添加空手道代码作为您自己问题的答案。
0赞 rev gan 9/16/2023
确定!!。我收到的响应 xml 有额外的字符串,空手道抱怨它不是有效的 xml 来解析它。所以我不得不手动子字符串几个字符并将字符串转换回 xml 并解析它。我将在下面发布回复

答:

1赞 rev gan 9/16/2023 #1

响应 xml:

content-type: '---'
content-transfer: '----'
<soap:Envelope>----</soap:Envelope>

空手道无法解析,因为它有字符并且似乎不是有效的 xml。使用子字符串删除了不需要的字符并转换回 xml 解决了这个问题

Given path '/endpoint'
And request requestpayload
And method post
Then status 200
* xml removeUnwantedString = response.substring(100)
* def parseResponse = karate.xmlPath(removeUnwantedString, 'Envelope/Body/column')

它得到了修复,我能够处理它