2014-09-29 3 views
0

У меня есть файл XML, и я хочу изменить имя, если имя == testName. Поэтому я написал что-то подобное, но это не сработает. Где я совершил ошибку? Он печатает мне несоответствие типа аргументов, и я не знаю, почему.Groovy XMLParser - обновить текст узла

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 ... 
    } 

ответ

4

вы должны получить доступ к стоимости текстового узла в name. так что это it.name[0].value = 'ds'

+0

Oh .. я был близок :) Но почему [0]? Не понимаю – Gwalk

+0

Хм .. понимаю: потому что это список, состоящий из 1 элемента – Gwalk

+1

В этом случае один. Там может быть больше. – cfrick

Смежные вопросы