使用Groovy -HCI聚合后删除xml标记

2020-08-26 11:18发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我想使用groovy...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我想使用groovy脚本在聚合后从xml有效负载中删除特定元素。

下面是聚合后的示例XML有效负载。
我想从xml中删除标记。

http://sap.com/xi/XI/SplitAndMerge"> >
<记录>
<行>
AA
BB

ZZ
<记录>
<行>
CC
DD

ZZ

我正在尝试下面的代码,但出现类没有此类属性的错误。

导入groovy.util.XmlSlurper;  
import groovy.xml.XmlUtil;
def消息processData(消息消息){ def root = new XmlParser()。parseText(message.getBody(java.lang.String));
root.Message1.Records.remove(Type)
message.setBody(XmlUtil.serialize(root));
退货信息; }

您能指导我做错什么吗?

谢谢,
Shubham

5条回答
大简至美
2020-08-26 12:10 .采纳回答

嗨,Shubham,

如果您想用Groovy解决它,那么您必须注意名称空间前缀。 另外,您应该使用replaceNode函数并将节点替换为什么,而不是remove函数:

 import groovy.util.XmlSlurper;
 导入groovy.xml.XmlUtil;
 def消息processData(消息消息){
 def root = new XmlParser()。parseText(message.getBody(java.lang.String));
 root.'multimap:Message1'.Records.Type.findAll {it.name()=='Type'} .each {it.replaceNode {}}
 message.setBody(XmlUtil.serialize(root));
 返回消息;
 }
 

如果要保存一些字符,也可以使用" **"代替给出完整路径。 (只要您的XML中的另一个XPath/级别上没有类型元素,此方法就起作用。)

 root。'**'。findAll {it.name()=='Type'} .each  {it.replaceNode {}} 

此致,
Raffael

一周热门 更多>