我正在使用soapui创建自动化测试,我需要检查当我在xml中的不同位置添加新的groupingNodes时会发生什么。
我的xml结构类似于:
<rootNode>
<groupingNode>
<id>1</id>
<name>Node 1</name>
<groupingNode>
<id>2</id>
<name>Node 2</name>
<groupingNode>
<id>3</id>
<name>Node 3</name>
</groupingNode>
</groupingNode>
</groupingNode>
<groupingNode>
<id>4</id>
<name>Node 4</name>
</groupingNode>
要添加的新元素:
<groupingNode>
<id>5</id>
<name>Node 5</name>
</groupingNode>
在数据源中我定义了几个不同的组合节点和添加位置,因此需要将一个测试用例中的新节点添加到rootNode,在第二个测试用例中添加到id = 3的groupNode,在第三个测试用例中添加到新创建的添加到rootNode的节点,依此类推。
所以我的问题是如何以编程方式将新的groupingNode元素添加到xml中的随机位置。
答案 0 :(得分:0)
我首先尝试深度,首先通过他的名字找到父groupingNode。
xml.'**'.find{groupingNode-> groupingNode.name.text() == parentNode}.appendNode( fragmentToAdd )
但由于我找不到所有节点,因此无效。后来我发现用这个代码我可以找到旧节点,但不能找到新节点。然后经过一些研究后我发现这是XmlSlurper的问题,如果我希望新节点可见,我需要再次评估xml 4.1 Adding nodes所以在创建新节点之后我需要做的就是:
def newXML = new StreamingMarkupBuilder().bind { mkp.yield xml}.toString()
xml= new XmlSlurper( false, true ).parseText( newXML )
之后我能够找到所有深度优先的groupingNodes。