Eu tenho um XML semelhante ao abaixo
<root>
<item>
<refitemid>10</refitemid>
</item>
</root>
meu requisito é primeiro adicionar um nó <additional_info> a, depois adicionar um novo nó a <additional_info> com base nos dados obtidos para que o novo XML seja apresentado como abaixo
<root>
<item>
<refitemid>10</refitemid>
<additional_info>
<sn><id>1</id></sn>
<sn><id>2</id></sn>
</additional_info>
</item>
</root>
Tentei fazer isso com o script abaixo.
def oPayload = new XmlSlurper().parseText(message.getBody() as String); //get above original XML data
if (oPayload.root.item.additional_info == "" || oPayload.root.item.additional_info == null) {
oPayload.root.item.appendNode {
additional_info {}
}
}
for (int i = 1; i < 3; i++) {
oPayload.root.item.additional_info.appendNode {
sn {
id(i.text())
}
}
}
oPayload = XmlUtil.serialize(oPayload)
infelizmente, o código acima não está funcionando, pois o resultado (no oPayload) será como abaixo:
<root>
<item>
<refitemid>10</refitemid>
</additional_info>
</item>
</root>
Você pode compartilhar sua ideia de como atingir o requisito? Muito obrigado.
Se você usar XMLParser , ficou um pouco mais fácil na minha opinião:
Se você realmente usa XmlSlurper, o que não é tão bom para modificar a árvore XML: