xml Java赢得';不要删除元素

xml Java赢得';不要删除元素,java,xml,dom,Java,Xml,Dom,我正在尝试使用removeChild()从xml文件中删除一个元素。尽管它说操作是成功的,但它仍然存在并且可以打印 DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder

我正在尝试使用removeChild()从xml文件中删除一个元素。尽管它说操作是成功的,但它仍然存在并且可以打印

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();

        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
        Document doc = docBuilder.parse(new File("/home/sr-user1/Téléchargements/Test/intense172E.xml"));

        Element output = (Element) doc.getElementsByTagName("output").item(0);

         output.getParentNode().removeChild(output);
         System.out.println(output.getTextContent());
Node.removeChild(Node)
不会使子节点无效,它只是将其与父节点分离。子节点可以再次使用,例如添加到另一个节点。

方法

 output.getParentNode().removeChild(output);     
将从父节点(在您的情况下为doc)中删除该节点,但您仍然拥有关于该节点的信息。既然你在印刷

 output.getTextContent()     
您仍在接收节点中存在的文本。您需要打印文档的内容,以检查它是否已从原始xml中成功删除

编辑:如果要修改原始xml文件,则需要通过以下操作再次写入:

 XMLOutputter xmlOutput = new XMLOutputter();
 xmlOutput.setFormat(Format.getPrettyFormat());
 xmlOutput.output(doc, new FileWriter("c:\\your_path\\file.xml"));

您正在打印的是
output.getTextContent()
,而不是
doc
…那么如何完全删除节点?为什么要这样做?“output”只是一个变量,只要您不使用它,它就会在某个时刻被java垃圾收集器删除。只要原始文档中没有,为什么会有问题?就是这样,原始文档中仍然有。你试过打印吗?因为在这一行中,System.out.println(output.getTextContent());您没有测试它。我找不到XMLOutputter类只有一个XMLOutPutSource类,它没有setFormat()方法。