Groovy xmlSlurper 删除空字段

Groovy xmlSlurper to remove empty fields

我有一个使用 XMLParser 删除空字段的代码,我想知道您是否可以帮我改用 xmlSlurper 来获得相同的版本。

代码如下:

File doc = new File("C:/Temp/input.xml")

def text = new String(doc.bytes, "UTF-8")

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

xml.depthFirst().each { 
  if( it.children().size() == 0 ) {
    it.parent().remove( it )
  }
}

def file = new File("C:/Temp/out/test.xml")   
def xmltext = XmlUtil.serialize(xml)
file.write(xmltext,'UTF-8')

到目前为止,我使用 XMLSlurper 的最佳猜测是,但它不起作用:

def xmlSl = new XmlSlurper().parseText(text)
xmlSl.depthFirst().each { 
  if( it.children().size() == 0 ) {
    it.parent().replaceNode { }
  }
}


def fileSl = new File("C:/Temp/out/testSl.xml")   
def xmltextSl = XmlUtil.serialize(xmlSl)
file.write(xmltextSl,'UTF-8')
println xmltextSl

您需要在空节点上调用替换节点,而不是在它的父节点上调用它:

xmlSl.depthFirst().each { 
  if(!it.text()){
     it.replaceNode{}
  }
}