Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Groovy XMLParser - update node text

Tags:

xml

groovy

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 ...
    }
like image 237
Gwalk Avatar asked Sep 03 '26 04:09

Gwalk


1 Answers

you have to access the value of the text-node within name. so it is it.name[0].value = 'ds'

like image 61
cfrick Avatar answered Sep 05 '26 15:09

cfrick



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!