如何将XML Groovy节点按值传递给变量

如何将XML Groovy节点按值传递给变量,groovy,Groovy,我正在尝试复制此指令的结果: def xmlEntrada = new File("input.txt").text def entrada = new XmlParser().parseText(xmlEntrada) def usuarios = entrada.cust_PS_SF_compensation.findAll{ e-> e.cust_userId.toString() == codigoActual } def usuario

我正在尝试复制此指令的结果:

 def xmlEntrada = new File("input.txt").text
    def entrada = new XmlParser().parseText(xmlEntrada)

        def usuarios = entrada.cust_PS_SF_compensation.findAll{ e-> e.cust_userId.toString() == codigoActual }
        def usuariosWithEndDate = entrada.cust_PS_SF_compensation.findAll{ e-> e.cust_userId.toString() == codigoActual }
但是变量usuariswithendDate的所有节点都具有相同的引用,我需要这个操作结果的copy by值,以便并行编辑

UsuariosWithenDate是一个arrayList,具有与usuarios不同的引用,但内容(节点)具有相同的引用,请提供帮助


据我所知,我们需要
clone()

鉴于此XML:

<entrada>
<cust_PS_SF_compensation>
    <cust_userId>5150</cust_userId>
</cust_PS_SF_compensation>
<cust_PS_SF_compensation>
    <cust_userId>6160</cust_userId>
</cust_PS_SF_compensation>
<cust_PS_SF_compensation>
    <cust_userId>7170</cust_userId>
</cust_PS_SF_compensation>
</entrada>

可以显示样本数据吗?很好!!,解决方案是.collect{node->node.clone()}
def xmlEntrada = new File("input.xml").text
def entrada = new XmlParser().parseText(xmlEntrada)
def codigoActual = "5150"

def usuarios = entrada.cust_PS_SF_compensation.findAll{ e ->
    e.cust_userId.text() == codigoActual 
}
assert 1 == usuarios.size()

def usuariosWithEndDate = entrada.cust_PS_SF_compensation.findAll{ e -> 
    e.cust_userId.text() == codigoActual 
}.collect { node ->
    node.clone()
}

assert 1 == usuariosWithEndDate.size()

assert ! usuarios[0].is(usuariosWithEndDate[0])
assert codigoActual == usuarios[0].cust_userId.text()
assert codigoActual == usuariosWithEndDate[0].cust_userId.text()