如何在空手道中复制节点及其子节点

How to duplicate a node and its children in Karate

您好,我正在尝试替换结构第二层中的一个节点,例如下面的 "two" 节点(我想复制此节点及其子节点)

<root>
   <first>1</first>
   <second>
      <one>1</one>
      <two>
         <a>a</a>
         <b>b</b>
         <c>c</c>
      </two>
      <three>c</three>
   </second>
   <third>3</third>
</root>

所以它最终看起来像这样:

<root>
   <first>1</first>
   <second>
      <one>1</one>
      <two>
         <a>a</a>
         <b>b</b>
         <c>c</c>
      </two>
      <two>
         <a>a</a>
         <b>b</b>
         <c>c</c>
      </two>
      <three>c</three>
   </second>
   <third>3</third>
</root>

空手道可以做到吗?

非常感谢

通常我不推荐 "too clever" 的测试 - 每个 Scenario 应该专注于一个 "static" 有效载荷 - 稍后当你尝试阅读你的时你会感谢自己测试。

另外请务必查看这组示例以获得 "templating" 个想法:xml.feature

但不管怎样,给你:

* def root =
"""
<root>
   <first>1</first>
   <second>
      <one>1</one>
      <two>
         <a>a</a>
         <b>b</b>
         <c>c</c>
      </two>
      <three>c</three>
   </second>
   <third>3</third>
</root>
"""
* xmlstring two = $root/root/second/two
* replace root.<three>c</three> = two + '<three>c</three>'
* xml root = root
* print root