删除XML结构Java DOM中的节点

Sko*_*eus 0 java xml dom

我正在尝试从Java中用DOM解析的XML文件中删除节点.

private Node deleteChildNode (Node node, String nodeName )
{
    Node tempNode = null;
    NodeList nl = node.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++)
    {
        tempNode = nl.item(i);
        if (tempNode.getNodeName().equals(nodeName))
        {                   
            tempNode= node.removeChild(tempNode);                   
        }        
    }
    return node;
}
Run Code Online (Sandbox Code Playgroud)

致电:

nodeClone = deleteChildNode(nodeClone, "L123");
Run Code Online (Sandbox Code Playgroud)

但该节点尚未删除.

NodeList nl = nodeClone.getChildNodes();
        for (int i = 0; i < nl.getLength(); i++)
            System.out.println(nl.item(i).getNodeName());
Run Code Online (Sandbox Code Playgroud)

显示"L123"节点.

提前致谢!

jta*_*orn 5

如果在给定节点下有多个具有节点名称的节点,则代码将无法工作,因为您将跳过节点.在删除节点时使用NodeList有点棘手.基本上,当您删除子节点时,如果修改NodeList,以便所有以下节点都转移回一个索引.(类似于在使用索引迭代列表时从List中删除元素).一个简单的解决方法是添加"--i;" 删除子节点后.