【发布时间】:2018-05-21 12:11:35
【问题描述】:
我有以下 xml 文件:
<testItems>
<children>
<testItem name=TestSuite1 enabled=false>
<children>
<testItem name=test1 enabled=false>
</testItem>
<testItem name=test2 enabled=false>
</testItem>
<testItem name=test3 enabled=false>
</testItem>
</children>
</testItem>
<testItem name=TestSuite2 enabled=false>
<children>
<testItem name=test3 enabled=false>
</testItem>
<testItem name=test4 enabled=false>
</testItem>
<testItem name=test5 enabled=false>
</testItem>
</children>
</testItem>
结构可以改变(意味着树的深度可以改变)。
我想启用 TestSuite1 并通过递归启用 TestSuite1 的所有子项(test1、test2、test3)
到目前为止,我有:
def root = new XmlParser(false, false, true).parse(mdsFile)
root.depthFirst().each {
if (it.@name == testItemToEnable) {
it.@enabled = true
it.children.depthFirst().each { child ->
child.@enabled = true
}
}
但我有以下例外:
No signature of method: groovy.util.NodeList.depthFirst() is applicable for argument types: () values: []
[在评论中的问题后添加]
<testItems>
<children>
<testItem name="TestSuite1" enabled="false">
<children>
<testItem name="test1" enabled="false">
</testItem>
<testItem name="test2" enabled="false">
<children>
<testItem name="testX" enabled="false">
</testItem>
</children>
</testItem>
<testItem name="test3" enabled="false">
</testItem>
</children>
</testItem>
<testItem name="TestSuite2" enabled="false">
<children>
<testItem name="test3" enabled="false">
</testItem>
<testItem name="test4" enabled="false">
</testItem>
<testItem name="test5" enabled="false">
</testItem>
</children>
</testItem>
场景: 1. suiteToEnable='test1' => test1, TestSuite1 变为真
- suiteToEnable='testX' => testX、test2 和 TestSuite1 变为 true
【问题讨论】:
标签: java xml groovy xml-parsing