karate xpath - 我们可以替换/删除节点吗?

时间:2018-05-31 01:39:56

标签: karate

我希望通过修改有效的xml消息文件来测试错误消息。 我可以在场景中轻松添加这样的节点:

* def invalidDocumentId = read('Valid.xml') * set invalidDocumentId /soapenv:Envelope/soapenv:Body = <tis:extraBonus>Extra</tis:extraBonus> Given request invalidDocumentId

但我还要删除节点,更新节点名称,更改属性名称。 有没有办法设置,或者我需要调用Java com.intuit.karate.XmlUtils。

1 个答案:

答案 0 :(得分:1)

首先,删除和添加节点甚至属性应该很简单,只需在XPath中使用removeset关键字即可。如果需要,他们会覆盖值。

* def base = <query><name>foo</name></query>
* remove base /query/name
* match base == <query/>
* set base /query/foo = 'bar'
* set base /query/@baz = 'ban'
* match base == <query baz="ban"><foo>bar</foo></query>

好消息是,如果你有一些真正棘手的XML操作要求,那么字符串replace语法就可以解决了。最好在Stack Overflow的另一个答案中解释:https://stackoverflow.com/a/50367134/143475