Reputation: 209
I have some XML file, and I want to change name, if name == testName. So I wrote something like this, but it doesn't work. Where I have done a mistake? It prints to me argument type mismatch, and I don't know why.
String xmlData = "
<logger>
<logLevel>
<id>1</id>
<idn>id1</idn>
<name>testName</name>
<level>warn</level>
<logLevelsPos>
<package id="97724539">
<packName>package1</packName>
</package>
<package id="98264591">
<packName>package2</packName>
</package>
</logLevelsPos>
</logLevel>
<logLevel>
<id>2</id>
<idn>id2</idn>
<name>nameName</name>
<level>error</level>
<logLevelsPos>
<package id="12732539">
<packName>package2</packName>
</package>
<package id="43264591">
<packName>package5</packName>
</package>
</logLevelsPos>
</logLevel>
</logger>";
def loggr = new groovy.util.XmlParser().parseText( xmlData );
for (def it : loggr.children()){
if(it.name.text().equals("testName") ) {
it.name.value = "ds";
//argument type mismatch ...
}
Upvotes: 3
Views: 8194
Reputation: 37008
you have to access the value of the text-node within name
. so it is it.name[0].value = 'ds'
Upvotes: 10