我想在写入之后删除一行xml文件

时间:2011-07-12 17:43:59

标签: java xml

我有这个代码,解析一个文件xml,我希望在写入这个文件之后删除第二行,但我不知道怎么做?

这是我的代码:

File file = new File("C:\\Documents and Settings\\My Documents\\test.xml");

dos = new DataOutputStream(new FileOutputStream(file));
dos.writeBytes(var2);  //after writing I want to remove the second line

try {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(file);
    doc.getDocumentElement().normalize();
    System.out.println("Root element " + doc.getDocumentElement().getNodeName());
    NodeList nodeLst = doc.getElementsByTagName("step");
    System.out.println("Information of all steps");

    for (int s = 0; s < nodeLst.getLength(); s++) {
        Node fstNode = nodeLst.item(s);

        if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
            Element fstElmnt = (Element) fstNode;
            System.out.println("oooo"+fstElmnt.toString());
            // NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("step");
            String fst = fstElmnt.getAttribute("name");
            System.out.println("name : "+fst); //display steps un step
        }
    }
}
catch (Exception e) {
    e.printStackTrace();
}

更新

I want to remove a node that generate an error when I try to parse the file ,so I should remove this node before trying to parse the file

1 个答案:

答案 0 :(得分:4)

“line”在XML文件中没有意义。文件不包含换行符,或者在任意点(例如,属性之间)断行,这是完全合法的。

相反,您希望从文件中删除特定元素,或从元素中删除文本(从您的问题中不清楚您想要的内容)。要执行前者,请在父级上调用Node.removeChild()。对于后者,您可以使用空字符串调用Node.setTextContent()或null。

诀窍是找到要替换的节点。看起来你正在走过DOM。但是,更优雅的方法是使用XPath。