使用groovy xml slurper删除重复子节点的Filter xml元素

使用groovy xml slurper删除重复子节点的Filter xml元素,xml,groovy,xml-parsing,duplicates,xmlslurper,Xml,Groovy,Xml Parsing,Duplicates,Xmlslurper,我需要过滤一个xml列表,以便获得所有的“元素”,而没有重复项。 输入: A. 1. B 2. B 2. 输出 A. 1. B 2. 在groovy中使用XmlSlurper或XmlParser如何实现这一点? 谢谢。像这样的东西是一种选择: import groovy.xml.* def data = ''' <List> <element> <field1>A</field1> <field2>1<

我需要过滤一个xml列表,以便获得所有的“元素”,而没有重复项。 输入:


A.
1.
B
2.
B
2.
输出

A.
1.
B
2.
在groovy中使用XmlSlurper或XmlParser如何实现这一点?
谢谢。像这样的东西是一种选择:

import groovy.xml.* 

def data = '''
<List>
<element>
    <field1>A</field1>
    <field2>1</field2>
</element>
<element>
    <field1>B</field1>
    <field2>2</field2>
</element>
<element>
    <field1>B</field1>
    <field2>2</field2>
</element>
</List>'''

def xml = new XmlParser().parseText(data)

def writer = new StringWriter() 
def result = new MarkupBuilder(writer).List { 
  xml.element.unique { 
    it.field1.text()
  }.each { n ->
    element { 
      field1(n.field1.text())
      field2(n.field2.text())
    }
  }
}

println writer
import groovy.xml.*
def数据=“”
A.
1.
B
2.
B
2.
'''
def xml=new XmlParser().parseText(数据)
def writer=new StringWriter()
def result=new MarkupBuilder(writer).List{
xml.element.unique{
it.field1.text()
}.每个{n->
元素{
字段1(n.field1.text())
字段2(n.field2.text())
}
}
}
印刷机
当运行时,会打印:

─➤ groovy solution.groovy
<List>
  <element>
    <field1>A</field1>
    <field2>1</field2>
  </element>
  <element>
    <field1>B</field1>
    <field2>2</field2>
  </element>
</List>
─➤ groovy解决方案
A.
1.
B
2.

请添加您尝试过的代码以及失败的原因(例如错误、堆栈跟踪、日志等),以便我们对其进行改进。是否可以使用findAll并删除其中的数据副本?
import groovy.xml.* 

def data = '''
<List>
<element>
    <field1>A</field1>
    <field2>1</field2>
</element>
<element>
    <field1>B</field1>
    <field2>2</field2>
</element>
<element>
    <field1>B</field1>
    <field2>2</field2>
</element>
</List>'''

def xml = new XmlParser().parseText(data)

def writer = new StringWriter() 
def result = new MarkupBuilder(writer).List { 
  xml.element.unique { 
    it.field1.text()
  }.each { n ->
    element { 
      field1(n.field1.text())
      field2(n.field2.text())
    }
  }
}

println writer
─➤ groovy solution.groovy
<List>
  <element>
    <field1>A</field1>
    <field2>1</field2>
  </element>
  <element>
    <field1>B</field1>
    <field2>2</field2>
  </element>
</List>