我有这个代码,解析一个文件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
答案 0 :(得分:4)
“line”在XML文件中没有意义。文件不包含换行符,或者在任意点(例如,属性之间)断行,这是完全合法的。
相反,您希望从文件中删除特定元素,或从元素中删除文本(从您的问题中不清楚您想要的内容)。要执行前者,请在父级上调用Node.removeChild()。对于后者,您可以使用空字符串调用Node.setTextContent()或null。
诀窍是找到要替换的节点。看起来你正在走过DOM。但是,更优雅的方法是使用XPath。