很抱歉打扰了一个原始的问题。我有一个多Map格式的xml输出如下。
需要从xml中删除空标记和多Map标记。
<?xml version='1.0' encoding='UTF-8'?>
<multimap:Messages xmlns:multimap="http://sap.com/xi/XI/SplitAndMerge">
<multimap:Message1>
<root>
<budgets/>
</root>
<root>
<budgets/>
</root>
<root>
<budgets>
<id>1234</id>
<field2>4496</field2>
<field3>test</field3>
</budgets>
</root>
<root>
<budgets/>
</root>
<root>
<budgets>
</root>
</multimap:Message1>
</multimap:Messages>
预期输出如下
<base1>
<root>
<budgets>
<id>1234</id>
<field2>4496</field2>
<field3>test</field3>
</budgets>
</root>
</base1>
尝试以下代码,
def body = message.getBody(java.lang.String) as String;
body = body.replaceAll("<multimap:Messages xmlns:multimap=", "");
body = body.replaceAll("\"http://sap.com/xi/XI/SplitAndMerge\">", "");
body = body.replaceAll("</multimap:Messages>", "");
body = body.replaceAll("multimap:Message", "base")
body = body.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();
def list = new XmlParser().parseText(body)
def list1 = list.'**'.findAll{it.children().size() == 0 }
list1.each{
list.remove(it)
}
也尝试使用以下代码:
list.'**'.removeAll{ it.children().size() == 0 }
不知道我在这里错过了什么。非常感谢你帮助解决这个问题。
1条答案
按热度按时间bqf10yzr1#
使用一些简单的XML处理:
退货