在groovy XMLslurper中过滤特定标记
我有一个xml文档,我想用XMLslurper解析它。这实际上工作得很好,但我在读取一些标记时遇到问题,因为在同一个节点中可能有多行标记,如:在groovy XMLslurper中过滤特定标记,xml,groovy,Xml,Groovy,我有一个xml文档,我想用XMLslurper解析它。这实际上工作得很好,但我在读取一些标记时遇到问题,因为在同一个节点中可能有多行标记,如: <element name="ABC"> <description>lorem ipsum</description> <description>foo</description> <description type="DETAILED">some text&
<element name="ABC">
<description>lorem ipsum</description>
<description>foo</description>
<description type="DETAILED">some text</description>
</element>
乱数假文
福
一些文本
如果我现在使用element.description.text()
,我会得到lorem ipsumfoosome文本作为输出。如何对其进行编码,以便:
仅读取第一个说明
标记
仅读取(第一个)description type=“DETAILED”
标记
读取所有标签,但至少用空格分隔
当您使用XmlSlurper
解析XML文档时,您可以访问元素
标记,作为实现Iterable
接口的标记。这就是为什么您可以应用以下操作:
要获取第一个描述标记():
要获取类型为DETAILED
()的第一个描述标记,请执行以下操作:
要获取由空格()分隔的所有描述,请执行以下操作:
完整示例:
defxml=''
乱数假文
福
一些文本
'''
def element=new XmlSlurper().parseText(xml)
println元素.description.first()?.text()
println element.description.find{it@type=='DETAILED'}?.text()
println元素.description.join(“”)
输出:
lorem ipsum
some text
lorem ipsum foo some text
element.description.find { it.@type == 'DETAILED' }?.text()
element.description.join(' ')
lorem ipsum
some text
lorem ipsum foo some text