首页 > 解决方案 > 空手道 - 有没有办法在 XML 请求中保留(或添加)DTD

问题描述

在阅读我的 XML 时,空手道似乎正在丢弃它的 DTD 部分。我的请求绝对必须包含 DTD。有没有办法让我添加它而不被丢弃?

我尝试过“设置”,但显然它也被丢弃了。

我曾尝试使用“文本”,但我在 XML 文件中的引用值也没有被解析,所以这不能达到目的。

* def req = call read(myXML.xml)

myXML.xml 看起来像这样

<!DOCTYPE mytype SYSTEM "RandomDTD.dtd">

<mytype>

</mytype>

当我打印 req 我看到的是

<mytype>

</mytype>

标签: karate

解决方案


在发送 XML 之前使用文本和字符串替换。有很多方法,看这个答案:https ://stackoverflow.com/a/57042773/143475

编辑:一个提示是,如果您想使用字符串发出请求,但将内容类型设置为 XML,您可以这样做:

* xmlstring temp = <my>xml</my>
* temp.replace('<my>', '<!DOCTYPE blah><my>')
* header Content-Type = 'application/soap+xml'
* request temp
* method post

推荐阅读