我用GUI界面显示xml文件,只是删除界面上的xml结点时,是可以的。但当我想删除xml文件中的结点时,点击删除按钮时整个界面都无反应,这是怎么回事在解析xml文件建立JTree时,我用的是org.w3c.dom,删除xml结点时用的是dom4j,这个会不会有影响?if(doc!=null){
org.dom4j.io.DOMReader xmlReader = new org.dom4j.io.DOMReader();
org.dom4j.Document Doc= (org.dom4j.Document) xmlReader.read(doc);
SaxXML sa=new SaxXML();
org.dom4j.Document document=sa.deleteNode(ancestors,nodeName,Doc);
sa.saveXML(document, f);
}下面是删除结点的操作:
public Document deleteNode(ArrayList<String> ancestors, String nodeName,
org.dom4j.Document doc) {
// TODO Auto-generated method stub
String path="root";
for(Iterator it=ancestors.iterator();it.hasNext();){
path+="/child";
}
Element ele=(Element) doc.selectSingleNode(path);
if(nodeName.equals(ele.attributeValue("name"))){
ele.getParent().remove(ele);
}
System.out.println("path="+path);
return doc; }
保存更新xml文件:
public void saveXML(Document doc,File inputXML){
try {
Writer writer = new FileWriter(inputXML);
OutputFormat format= OutputFormat.createPrettyPrint();//格式化
XMLWriter xmlWriter = new XMLWriter(writer,format);
xmlWriter.write(doc);
xmlWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}请问这样做对吗?
org.dom4j.io.DOMReader xmlReader = new org.dom4j.io.DOMReader();
org.dom4j.Document Doc= (org.dom4j.Document) xmlReader.read(doc);
SaxXML sa=new SaxXML();
org.dom4j.Document document=sa.deleteNode(ancestors,nodeName,Doc);
sa.saveXML(document, f);
}下面是删除结点的操作:
public Document deleteNode(ArrayList<String> ancestors, String nodeName,
org.dom4j.Document doc) {
// TODO Auto-generated method stub
String path="root";
for(Iterator it=ancestors.iterator();it.hasNext();){
path+="/child";
}
Element ele=(Element) doc.selectSingleNode(path);
if(nodeName.equals(ele.attributeValue("name"))){
ele.getParent().remove(ele);
}
System.out.println("path="+path);
return doc; }
保存更新xml文件:
public void saveXML(Document doc,File inputXML){
try {
Writer writer = new FileWriter(inputXML);
OutputFormat format= OutputFormat.createPrettyPrint();//格式化
XMLWriter xmlWriter = new XMLWriter(writer,format);
xmlWriter.write(doc);
xmlWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}请问这样做对吗?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货