问题描述
输入:
<?xml version='1.0' encoding='UTF-8'?>
<Records>
<Line>
<Field1>ABC</Field1>
<Field2>123</Field2>
<Field3>XXX</Field3>
<Field4>567890</Field4>
</Line>
</Records>
代码:
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;``
import groovy.xml.XmlUtil;
import groovy.util.*;
def Message processData(Message message) {
//Body
def body = message.getBody(java.lang.String) as String;
def root = new XmlParser().parseText(body);
root.Line[0].appendNode("Field5",[:],"MyNewField");
return message;
}
请帮助使用 groovy 脚本创建新节点
当 xml 路径也“在此处输入代码”时出现此错误 没有方法签名:groovy.util.NodeList.appendNode()
嗨
非常感谢您的回复。我的实际需求包含多个重复节点结构,如下 groovy IDE link. 请看下面的代码示例。我遇到了如下类似的问题。
解决方法
您可以像这样创建一个节点,以便将 Field5
节点添加到数据中的每一行:
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.xml.XmlUtil;
import groovy.util.*;
def Message processData(Message message) {
def body = message.getBody(java.lang.String);
def root = new XmlParser().parseText(body)
root.data.row.each { row ->
row.appendNode("Field5","newfield")
}
message.setBody(XmlUtil.serialize(root));
return message;
}
鉴于您在链接中提供的 xml:
<?xml version="1.0" encoding="UTF-8"?>
<VqlQueryRestResult>
<responseStatus>SUCCESS</responseStatus>
<responseDetails>
<limit>1000</limit>
<offset>0</offset>
<size>3</size>
<total>3</total>
</responseDetails>
<data>
<row>
<Field1>ABC</Field1>
<Field2>123</Field2>
<Field3>XXX</Field3>
<Field4>567890</Field4>
</row>
<row>
<Field1>ABC</Field1>
<Field2>123</Field2>
<Field3>XXX</Field3>
<Field4>567890</Field4>
</row>
<row>
<Field1>ABC</Field1>
<Field2>123</Field2>
<Field3>XXX</Field3>
<Field4>567890</Field4>
</row>
</data>
</VqlQueryRestResult>