天天看點

關于dom4j

jar包下載下傳:https://dom4j.github.io/

具體教程參考文章:https://www.cnblogs.com/sharpest/p/7877501.html

先編寫一個xml如下

<?xml version="1.0" encoding="UTF-8"?>
<students>
     <student id="01">
           <name>哇唧唧哇</name>
           <age>8</age>
         </student>
     <student id="02">
           <name>嗷嗷嗷</name>
           <age>4</age>
         </student>
</students>
           

導入dom4j jar包

簡單查詢:

SAXReader reader = new SAXReader();
    //SAXReader :讀取xml檔案到Document樹結構檔案對象
    //建立dom4j的解析器
	Document document = reader.read(new File("student.xml"));
	//通過該解析器讀取xml檔案
    Element  root  = document.getRootElement();
    //将檔案變為root根元素-------1
    for( Iterator iterator = root.elementIterator();iterator.hasNext();) {
      	Element element = (Element) iterator.next();
      //System.out.println(element.getName()); //獲得節點: student
      	String id = element.attributeValue("id");//獲得id
        String name=  element.elementText("name");//獲得name标簽(标簽内容)
        //将檔案變為root根元素-------2
        List<Element> elelist= root.elements();//兩個student标簽
    	for(Element element:elelist) {
		String id = element.attributeValue("id");
		System.out.println(id);
	}
           

添加節點:

/編寫解析器

SAXReader reader = new SAXReader();
	 Document document = reader.read(new File("student.xml"));
	 //獲得root
	 Element root = document.getRootElement();
	 Element student =  root.addElement("student").addAttribute("id", "03");
	 student.addElement("name").addText("www");
	 student.addElement("age").addText("20");
	 //定義資料
	// XMLWriter writer = new XMLWriter(new FileWriter(new File("student.xml")));
	 //建立流
	 OutputFormat format = OutputFormat.createPrettyPrint();
	 format.setEncoding("UTF-8");
	 XMLWriter  writer = new XMLWriter(new FileWriter(new File("student.xml")),format);
	 writer.write(document);
	 //關閉流
	 writer.close();
           

删除:dom4j 提供方法可以快速定位到想要的删除的内容

利用xpath

導入:

jaxen-1.1-beta-6.jar

jaxme-api-0.3.jar

jsr173_1.0_api.jar

pull-parser-2.1.10.jar

relaxngDatatype-20030807.jar

xpp3-1.1.3.3.jar

xsdlib-20030807.jar

public static void main(String[] args) throws DocumentException {
	   SAXReader reader = new SAXReader();
		 Document document = reader.read(new File("student.xml"));
		 //獲得root
		 Element root = document.getRootElement();
		 Element student = (Element) document.selectSingleNode("//student[@id='03']");
		 student.getParent().remove(student);
		 try {
			show("student.xml",document);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}

private static void show(String filiePath, Document document) throws IOException {
	 //建立流
	 OutputFormat format = OutputFormat.createPrettyPrint();
	 format.setEncoding("UTF-8");
	 XMLWriter  writer = new XMLWriter(new FileWriter(new File(filiePath)),format);
	 writer.write(document);
	 //關閉流
	 writer.close();
	
}
           

修改:查詢到指定的元素,才能進行修改

public static void main(String[] args) throws DocumentException, IOException {
	   SAXReader reader = new SAXReader();
		 Document document = reader.read(new File("student.xml"));
		 Element student = (Element) document.selectSingleNode("//student[@id='02']");
		 student.element("name").addAttribute("type", "dou");
		 student.element("name").setText("11");
		 show("student.xml", document);
		 try {
			show("student.xml",document);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}

private static void show(String filiePath, Document document) throws IOException {
	 //建立流
	 OutputFormat format = OutputFormat.createPrettyPrint();
	 format.setEncoding("UTF-8");
	 XMLWriter  writer = new XMLWriter(new FileWriter(new File(filiePath)),format);
	 writer.write(document);
	 //關閉流
	 writer.close();
	
}