使用 groovy xml slurper 过滤 xml 元素删除重复的子节点
Filter xml element removing duplicated child node with groovy xml slurper
我需要过滤一个 xml 列表,以便获得所有没有重复的“元素”。
输入:
<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>
<element>
<field1>A</field1>
<field2>1</field2>
</element>
<element>
<field1>B</field1>
<field2>2</field2>
</element>
如何使用 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
当 运行 打印时:
─➤ groovy solution.groovy
<List>
<element>
<field1>A</field1>
<field2>1</field2>
</element>
<element>
<field1>B</field1>
<field2>2</field2>
</element>
</List>
我需要过滤一个 xml 列表,以便获得所有没有重复的“元素”。 输入:
<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>
<element>
<field1>A</field1>
<field2>1</field2>
</element>
<element>
<field1>B</field1>
<field2>2</field2>
</element>
如何使用 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
当 运行 打印时:
─➤ groovy solution.groovy
<List>
<element>
<field1>A</field1>
<field2>1</field2>
</element>
<element>
<field1>B</field1>
<field2>2</field2>
</element>
</List>