如果内部没有字段,是否可以删除节点?
这是xml的示例:
<nodes xmlns:d="www.test.com" xmlns:m="www.type.com">
<m:node>
<d:id>1</d:id>
</m:node>
<m:node>
<d:id>2</d:id>
<d:status>ok</d:status>
</m:node>
</nodes>
这是我需要的结果:
<nodes xmlns:d="www.test.com" xmlns:m="www.type.com">
<m:node>
<d:id>2</d:id>
<d:status>ok</d:status>
</m:node>
</nodes>
这是我尝试的代码:
String myxml = """
<nodes xmlns:d='ww.test.com' xmlns:m='www.type.com'>
<m:node>
<d:id>1</d:id>
</m:node>
<m:node>
<d:id>2</d:id>
<d:status>ok</d:status>
</m:node>
</nodes>
"""
def xml=new XmlParser().parseText(myxml)
def nodeToDel=xml.nodes.node.find { it.'d:status'.text() == '' }
if (nodeToDel != null){
nodeToDel.print(nodeToDel);
parent = nodeToDel.parent()
parent.remove(nodeToDel)
}
您能帮我删除该字段为空的节点吗?
谢谢 拜斯
答案 0 :(得分:1)
这应该可以满足您的需求:
def xml = new XmlParser(false, false).parseText(myxml)
xml.'m:node'.each {
if (!it.'d:status'?.text()) {
xml.remove(it)
}
}
new XmlNodePrinter(System.out.newPrintWriter()).with {
preserveWhitespace = true
it.print(xml)
}
它将结果xml打印到System.out ...如果您需要文件或其他内容,则需要创建一个PrintWriter,并将其作为参数传递给XmlNodePrinter构造函数