java操作XML(一)

2014-11-24 02:55:47 · 作者: · 浏览: 0

最近一直在做高效平台的框架,其实意识到我要做一个简单的框架的时候是在我已经做完我认为的一版界面之后,开始以为我要做的是一个可配置的首页展示,但是吭哧吭哧做了两个星期,大概功能实现了之后,才发现要做的不是这个,哎,需求不清楚害死人啊,但是这两个星期并没有白白浪费,也从中学到了很多东西,下面主要介绍读取XML。

在做系统的时候,经常会遇到读取xml的需求,一开始是读取,于是我上网开始查询读取,接着查询删除,接着查询修改,当把这些代码查的差不多的时候,我发现,我为什么不把这些的操作都封装到一个类里,使用的时候直接调用,岂不是更好,感觉之前脑袋都秀逗了,分别查了那么多,还一个个的调试,抱着这个心态继续上网查(因为我真心感觉网上肯定有,如果我自己封装的话脑袋就真的进水了)。

源代码展示:

package com.gxpt.struts2;
import java.io.File;
import java.io.FileWriter;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class testAddDeleteXML {
private Document document;
	private String filePath; //文件所在的实际物理路径
	//private WriteLog writelog;
	public static void main(String[] args) throws DocumentException {
		//String filepath = System.getProperty("user.dir")+"/XmlFiles/LocalServicesConfig.xml";
		String filepath ="F:\\JAVA项目\\高校平台\\demo\\gxpt\\WebContent\\limits\\manager.txt";
		testAddDeleteXML operator = new testAddDeleteXML(filepath);
		operator.getXmlFile();
	
		
//		Map map = new HashMap();
//		map.put("id", "m1");
//		map.put("name","module1");
//		map.put("url", "index1.jsp");
//		operator.addChild("div", "div9","module", "",map);
		//operator.updateChild("style", "", "div", "asdfasdf",1);		

		operator.deleteChildOne("style", "","div","div11");
		//operator.deleteChild("div", "div9","module");
		//String str = operator.getChild("div", "div8", "module");
		//System.out.println(str);
		//Element root = document.getRootElement();//获取根节点名称
		 
		
	}
	
	
	
	public  testAddDeleteXML(String filepath){
		this.document = null;
		this.filePath = filepath;
		//writelog = new WriteLog();
	}
	/** 
	* 创建XML文件
	* @param rootName:根节点名称
	*/
	public void createXMLFile(String rootName) {
	   if(!fileExist()){
	    this.document = DocumentHelper.createDocument();
	    this.document.addElement(rootName);
	    saveXMLFile(this.document);
	   }
	}
/**
* 获取已存在的XML文档
* @return
*/
	public Document getXmlFile() {
	   if (fileExist()) {
	    SAXReader reader = new SAXReader(); 
	    try {
	     this.document = reader.read(new File(filePath));
	    } catch (DocumentException e) {
	   //  String loginfo = StackTraceToString.getExceptionTrace(e);
	   //  writelog.writeLogToEnd("LocalServerManager", loginfo);
	    }finally{
	     reader = null;
	    }
	   } else {
	    //写日志
	   // String loginfo = "XML file does not exist,read error!";
	  //  writelog.writeLogToEnd("LocalServerManager",loginfo);
	    System.exit(0);
	   }
	   return this.document;
	}
	
	/**
	* 添加元素
	* @param fatherPath:父节点名称
	* @param fatherattr:父节点属性
	* @param childName:要添加的节点名称
	* @param childValue:要添加的节点值
	*/
	public void addChild(String fatherNode, String fatherAttr,String childName, String childValue,Map mapAttr) {
	   ChildOperator(fatherNode,fatherAttr,childName,childValue,"add",mapAttr,0);
	}
	/**
	* 修改元素
	* @param fatherPath:父节点名称
	* @param fatherattr:父节点属性
	* @param childName:要修改的节点名称
	* @param childValue:要修改成的节点值
	*/
	public void updateChild(String fatherNode, String fatherAttr,String childName, String childValue,i