0

私は次のXMLを持っています

<test>
<one>
    <one1>120</one1>
    <one2>115</one2>
</one>
<two>
    <two1>100</two1>
    <two2>50</two2>
</two>

値を次のように変更する必要があります

<test>
<one>
    <one1>121</one1>
    <one2>116</one2>
</one>
<two>
    <two1>101</two1>
    <two2>51</two2>
</two>

私の XML はローカルに保存されます。XMLを変更するために次のグルーヴィーなコードを書きました

def xmlFile = "D:/Service/something.xml"
def xml = new XmlParser().parse(xmlFile)
xml.one[0].one1[0].each { 
  it.value = "201"
}
xml.one[0].one2[0].each { 
  it.value = "116"
}

xml.two[0].two1[0].each { 
  it.value = "101"
}
xml.two[0].two2[0].each { 
  it.value = "51"
}

new XmlNodePrinter(new PrintWriter(new FileWriter(xmlFile))).print(xml)

しかし、私はこのエラーが発生しています

原因: groovy.lang.ReadOnlyPropertyException: 読み取り専用プロパティを設定できません: クラスの値: java.lang.String

私は何を間違っていますか?

4

1 に答える 1

2

ノード.value() はNodeクラスのメソッドです。対応するメソッドメソッドを探していsetValueます。

def xml = new XmlParser().parseText('<test><one><one1>120</one1><one2>115</one2></one><two><two1>100</two1><two2>50</two2></two></test>');
xml.one[0].one1[0].setValue(121);
xml.one[0].one2[0].setValue(116);
xml.two[0].two1[0].setValue(101);
xml.two[0].two2[0].setValue(51);
于 2012-04-07T17:57:21.210 に答える