Groovy 查找并返回嵌套树的成员

Groovy 查找并返回嵌套树的成员,groovy,Groovy,想象一下,我有一棵这样的嵌套树 invoices{ invoice(date: new Date(106,1,2)){ item(count:5){ product(name:'ULC', dollar:1499){ vendor(id:1) } } item(count:1){ product(name:'Visual Editor'

想象一下,我有一棵这样的嵌套树

invoices{
    invoice(date: new Date(106,1,2)){

        item(count:5){
            product(name:'ULC', dollar:1499){
                vendor(id:1)
            }
        }
        item(count:1){
            product(name:'Visual Editor', dollar:499){
                vendor(id:3)
            }
        }
    }
    invoice(date: new Date(106,1,2)){
        item(count:4) {
            product(name:'Visual Editor', dollar:499){
                vendor(id:4)
            }
        }
    }
假设我已经将其转换为invoice类列表的一个实例。现在,对于我来说,返回树中供应商id为3的供应商类的实例的最佳方法是什么

这是错误的,但有点像


Vendor myVendor=invoices*.item*.product*.Vendor.find{i.id==3}

每个
spread
将属性收集到一个列表中,因此,您最后一次
find{}
将在
列表的
列表中查找结果。您可以展平
供应商
列表:

def vendor = invoices*.items*.product*.vendor.flatten().find { it.id == 3 }
assert vendor