java操作XML(三)
2014-11-24 02:55:47
·
作者:
·
浏览: 8
(Iterator childs=childelements.iterator();childs.hasNext();){
Element everyone = (Element)childs.next();
currentelement.remove(everyone);
}
}else if(operator.equals("get")){
List childelements = currentelement.elements(childName);//获取当前节点下的所有子节点,判断其值,以进行修改
for(Iterator childs=childelements.iterator();childs.hasNext();){
Element everyone = (Element)childs.next();
// result = everyone.getText();
result =everyone.attributeva lue("id")+","+result ;
}
}
else{
//写日志
// String loginfo = "XmlFile Operator not exists!";
// writelog.writeLogToEnd("LocalServerManager",loginfo);
}
}
}
}
}
}
saveXMLFile(this.document);
return result;
}
/**
* 保存XML文件
* @param document: XML文件名
*/
private void saveXMLFile(Document document) {
try {
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(new FileWriter(new File(filePath)),format);
writer.write(document);
writer.close();
} catch (Exception e) {
// String loginfo = StackTraceToString.getExceptionTrace(e);
// writelog.writeLogToEnd("LocalServerManager", loginfo);
}
}
/**
* 判断XML文件是否存在.
* @param fileName
* @return
*/
private boolean fileExist() {
java.io.File objFile = new java.io.File(this.filePath);
if (objFile.exists()) {
return true;
} else {
return false;
}
}
}
XML文件:
解析:这里应用递归的方式来判断是对跟节点还是子节点的操作,相对比较清晰,这里用的是if判断来判断选择的是那种操作,如果变动相对较多,我感觉可以利用依赖注入,省去了if判断的麻烦,但是当时只是做了一个demo,没有更多的优化,如果有兴趣的话可以试一试。
总结:读取XML其实并不难,在写.NET系统的时候就写过关于xml的读取,但是当时真的就是一个一个的写,需要什么在哪个方法下写什么,不仅要写很多重复的代码,而且有一点问题需要重复的修改,所以,有时候,虽然实现了需求重要,但是怎么实现,同样重要!