我正在使用groovy 1.8,我想在其中列出类似此List<MyQueryClass> queryl=new List<MyQueryClass>()
的列表
因此,使用下面的循环,我可以在此列表中添加更多内容,我该怎么做?
def queryxml=new XmlSlurper().parse(QueryProvider.class.getResourceAsStream( '/queries.xml' ))
queryxml.query.each { node ->
operation="${node.@operation.text()}"
if(operation.equals(op.create.toString()))
{
query="${node.text()}"
println "$query"
MyQueryClass myQuery=new MyQueryClass (query)
queryl.add(myQuery)
}
}
最佳答案
您没有给我们太多帮助,但是假设您有一堂课:
@groovy.transform.Canonical class MyQuery {
String queryText
}
您的XML类似于:
def xml = '''<xml>
<query operation="create">
This is q1
</query>
<query operation="q2">
This is q2
</query>
<query operation="create">
This is q3
</query>
</xml>'''
然后,您应该能够使用
findAll
将xml限制为仅关注的节点,然后使用collect
来建立对象列表,如下所示:def queryxml = new XmlSlurper().parseText( xml )
List<MyQuery> query = queryxml.query.findAll { node -> // Filter the nodes
node.@operation.text() == 'create'
}.collect { node -> // For each matching node, create a class
new MyQuery( node.text().trim() )
}
println query
然后输出:
[MyQuery(This is q1), MyQuery(This is q3)]
PS:
groovy.transform.Canonical
批注is explained here关于java - 如何动态创建Java类列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6137014/