如何删除不属于';groovy中是否有xml中的特定字段?

如何删除不属于';groovy中是否有xml中的特定字段?,xml,groovy,Xml,Groovy,如果内部没有字段,是否可以删除节点 这是一个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>

如果内部没有字段,是否可以删除节点

这是一个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>

1.
2.
好啊
这是我需要的结果:

<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>

2.
好啊
这是我尝试的代码:

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)
}
String myxml=”“”
1.
2.
好啊
"""
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()
父级删除(节点删除)
}
你能帮我删除那个字段为空的节点吗

谢谢
BAI

这应该满足您的需求:

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构造函数