2013-04-17 35 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> 

Đó là XML của tôi và tôi muốn thay đổi giá trị của nút 'Anzahl_x0020_R'. Vấn đề là, vào thời gian chạy tôi không biết tên chính xác. Tôi chỉ biết rằng nút thay đổi sẽ bắt đầu bằng 'Anzahl'. Vì vậy, tôi đã làm điều này:XmlSlurper: Cách thay đổi văn bản của nút động

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

Vấn đề là, nó không hoạt động, giá trị sẽ giữ nguyên. Nếu tôi làm:

messdatenXML.Anzahl_x0020_R = "my_new_value" 

nó sẽ hoạt động nhưng như tôi đã nói, tôi không biết tên chính xác khi chạy.

Trả lời

11

Tôi tin rằng bạn cần phải sử dụng replaceBody như vậy:

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

Các công trình lớn, cảm ơn! –

+0

cảm ơn bạn vì 'replaceBody'. – Rao

Các vấn đề liên quan