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{}
}
}
我有一个使用 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{}
}
}