Dom4j框架的使用

周江霄發表於2015-04-30

    dom4j是一個Java的XML API,類似於jdom,用來讀寫XML檔案的。我們說Dom4j是一個框架,框架就是很多很多類的集合,它整合了DOM思想,將文件中的所有內容建立成物件放到記憶體中,利用事件驅動來對XML實現不同的操作。


    1.Dom4j的引入


    使用Dom4j時,必須首先引入dom4j.jar,如果使用到了它的擴充功能,還需要引入jaxen-1.1-beta-6.jar。


   2.對XML的操作


    要想實現對XML的操作,首先必須讀取到XML文件:

    

	SAXReader reader = new SAXReader();
	Document document = reader.read(new File("src/student.xml"));

    ①查詢

    

	//1獲得根元素
	Element root =  document.getRootElement();
		
	//2遍歷根元素下student的子元素
	Iterator<Element> it = root.elementIterator("student");
	while(it.hasNext()){
		Element studentEle = it.next();
		//3獲得number屬性
		String number =studentEle.attributeValue("number");			
		String name = studentEle.elementText("name");			
		String age = studentEle.elementText("age");			
		String sex = studentEle.elementText("sex");		
	}

    

    ②新增


	//1獲取students根元素
	Element root = document.getRootElement();
	//2新增學生元素
	Element student = root.addElement("student").addAttribute("number", "ITCAST_003");
	//3增加子元素
	student.addElement("name").addText("Fanny");
	student.addElement("age").addText("23");
	student.addElement("sex").addText("female");
	//4將新新增的寫回到文件中
		
	//1>建立格式化器
	OutputFormat format = OutputFormat.createPrettyPrint();
	//2>建立寫入器
	XMLWriter writer = new XMLWriter(new FileWriter("src/studentcopy.xml"),format);
	//3>寫入檔案
	writer.write(document);
	//4>關閉資源
	writer.close();

    ③刪除

    

	//1.獲取根元素
	Element root = document.getRootElement();

	//2.遍歷student的子元素

	//2.1>方法一
	Iterator<Element> it = root.elementIterator("student");
	while(it.hasNext()){
	Element studentEle = it.next();
	String number = studentEle.attributeValue("number");		
		if(number == "jerry"){
			it.remove();
		}
		}
	//2.2方法二
	List<Element> list =  root.elements("student");
	for(int i = 0; i < list.size(); i++){
		Element studentEle = list.get(i);
		//3.判斷學號是否等於被刪除學生,是的話就執行刪除
		if("itcast_0001".equals(studentEle.attribute("number"))){
			studentEle.getParent().remove(studentEle);
			break;
		}
	}		
	//3.儲存到文件
	OutputFormat format = OutputFormat.createPrettyPrint();
	XMLWriter writer = new XMLWriter(new FileOutputStream("src/studentDel.xml"),format);		
	writer.write(document);
	writer.close();

    總結:

    在學習Dom4j的過程中,感覺很像學習js的時候對DOM的操作,實際上,Dom4j也正是在DOM的基礎上實現對XML的操作的,所以這一塊的學習一定要和之前的HTML DOM結合起來,會事半功倍的。    


相關文章