删除xml文件中的数据无法正常工作

时间:2014-02-03 13:09:07

标签: java xml

我正在开发XML编辑器,当用户单击类型上的删除时,应用程序将删除整个类型。 但它不是唯一删除内容而是留下标签。

<type>
<OBJECT_TYPE/>
<prop/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
<param/>
</type>
<type>
<OBJECT_TYPE/>
<prop/>
<param/>
<param/>
<param/>
</type>
<type>
<OBJECT_TYPE/>
<prop/>
<param/>
<param/>
</type>

所以基本上所有的数据都消失了,但它留下了这个标签,我也想要将它们删除。 怎么做?

我的代码:

NodeList type = (NodeList) doc.getElementsByTagName("type").item(x);
            System.out.println("type : " + type);

            for (int i = 0; i < type.getLength(); i++) {

                Node curNode = (Node) type.item(i);
                System.out.println(" Node name : " + curNode.getChildNodes());
                removeChilds(curNode);

            }

            // Save the new update
            save(doc);

public static void removeChilds(Node node) {
        while (node.hasChildNodes())
            node.removeChild(node.getFirstChild());
    }

1 个答案:

答案 0 :(得分:1)

我认为你做错了DOM树导航。 item已经为Node标记返回了<type>。你只需删除它:

Node type = doc.getElementsByTagName("type").item(x);
type.getParentNode().removeChild(type);

你在代码中做了什么 - 你将Node转换为NodeList(xml元素也是子节点列表),所以你的for循环迭代<type>的子节点{1}}。然后在每个孩子中(例如您的示例中的propparam),您再次迭代孩子并删除其中的每个孩子。所以你永远不会删除type节点。