我有一个XML结构这样Groovy的XML选择子节点属性基于父模式属性
<JJJ version="2.0" >
<Data >
<Object class="classX">
<k name="constname1">variable1</p>
<k name="constname2">variable2</p>
<k name="constname3">variable3</p>
</Object>
<Object class="classY">
<k name="constname1">variable11</p>
<k name="constname2">variable12</p>
<k name="constname3">variable13</p>
</Object>
我需要选择ClassX节点并在含有atttribute constname1的那个值(即变量1
def parser = new XmlSlurper()
def mymo=records.'Data'.'Object';
def mytest = mymo.findAll{[email protected]()=="ClassX"};
mytest.each{
it.'p'.each{
println [email protected]() +'-'+ it.text() }
}
这是工作但是,代替然后在循环comapring文本,我需要做这样的事情
def testme= mytest.'k'.find{ [email protected]()=="constname1"}
这个我没有得到正确的
但是下面的是正确
println mymo.'k'.find{[email protected]()=="constname1"}
但我想限制选择的节点classX
那么可以有更多的节点与ClassX,我需要使用.findAll;然后它不起作用;基本上我需要得到所有类的列表,其中包含类似于'def mytest = mymo.findAll {it。@ class.text()==“ClassX”};''然后在该文件上执行'find' –
@alexcpn你能否更新你的问题,这样的例子显示你实际上有什么和你需要的结果? –
@alexcpn更新了我的答案...是否更接近? –