2013-04-17 12 views
6
<Messdaten> 
    <EL_NR>NAYP99</EL_NR> 
    <EL_NR_Original/> 
    <Erfassungsdatum>2012-12-12 11:58:54.000</Erfassungsdatum> 
    <Massnahme>Lot_Hold</Massnahme> 
    <Anzahl_x0020_R>50</Anzahl_x0020_R> 
    <FEHLER>OK</FEHLER> 
    <SEQ>72</SEQ> 
</Messdaten> 

Questo è il mio XML e voglio modificare il valore del nodo 'Anzahl_x0020_R'. Il problema è che in fase di esecuzione non conosco il nome esatto. So solo che il nodo da cambiare inizierà con "Anzahl". Così ho fatto questo:XmlSlurper: Come modificare il testo di un nodo dinamico

messdatenXML.childNodes().each { merkmal -> 
    if (merkmal.name.contains('Anzahl')) { 
     messdatenXML.merkmal = "my_new_value"; 
    } 
} 

Il fatto è che non funziona, il valore rimarrà lo stesso. Se lo faccio:

messdatenXML.Anzahl_x0020_R = "my_new_value" 

funzionerà ma, come ho detto prima, non conosco il nome esatto in fase di esecuzione.

risposta

11

Credo che hai bisogno di usare replaceBody in questo modo:

messdatenXML.'**'.findAll { it.name().startsWith 'Anzahl' }.each { node -> 
    node.replaceBody 'my new value' 
} 
println groovy.xml.XmlUtil.serialize(messdatenXML) 
+0

funziona bene, grazie! –

+0

grazie per il 'replaceBody'. – Rao

Problemi correlati