Ошибка при чтении входного xml и построении выходного xml с использованием groovy

Я пытаюсь извлечь значения из входного xml и создать выходной xml, используя groovy. Я получаю ошибку ниже. Я взял небольшой пример, чтобы проверить логику.

 def xml1 = """
 <company type="bentley">
     <account>
      <dept1>IT</dept1>
      <dept2>Admin</dept2>
      <dept3>Security</dept3>
    </account>
</company>""" ;

def xml2 = """
<company type="NG">
    <account>
      <dept1></dept1>
      <dept2></dept2>
      <dept3></dept3>
     </account>
</company>""";

def rootnode1= new XmlParser().parseText(xml1);
def rootnode2= new XmlParser().parseText(xml2);

rootnode1.account.each {
rootnode2.account.dept1[0].value = it.dept1[0].text();
rootnode2.account.dept2[0].value = it.dept2[0].text();
}

Ошибка: java.lang.IllegalArgumentException: несоответствие типа аргумента

Спасибо, Венкат


person Venkat    schedule 11.10.2017    source источник
comment
Указывает ли ошибка, в какой строке происходит ошибка?   -  person Dan O'Boyle    schedule 11.10.2017


Ответы (1)


Похоже, вам нужно предоставить счетчик функции each. Попробуйте что-то вроде следующего:

rootnode1.account.each { n ->
rootnode2.account.dept1[0].value = n.dept1[0].text();
rootnode2.account.dept2[0].value = n.dept2[0].text();
}

Еще лучше, если у вас есть неизвестное количество отделов, вы можете переместить .each() на уровень отдела.

person Dan O'Boyle    schedule 11.10.2017