java操作XML(三)

2014-11-24 02:55:47 · 作者: · 浏览: 3
(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的读取,但是当时真的就是一个一个的写,需要什么在哪个方法下写什么,不仅要写很多重复的代码,而且有一点问题需要重复的修改,所以,有时候,虽然实现了需求重要,但是怎么实现,同样重要!