1. 程式人生 > >java中的DOM4J解析XML

java中的DOM4J解析XML

1.DOM4J是目前使用非常廣泛的一種解析XML技術,與DOM相比,他的使用更加方便,操作簡單!

2.DOM4J是一個易用的,開源的庫,可以用於XML、XPath、XSLT等。

3.DOM4J的主要介面都在org.dom4j包裡定義。

  • Attribute:定義XML的屬性

  • Branch:為能夠包含子節點的節點,如XML元素(Element)和文件(Docuements)定義了一個公共的行為
  • CDATA:定義了XML CDATA區域
  • Comment:定義了文件註釋的行為

  • Document:定義了XML文件

  • Text:定義了文字節點

4.使用DOM4J讀寫xml文件,需要下載dom4j.jar包,官網就可以下載 https://dom4j.github.io/ .

5.具體使用dom4j來對xml文件進行增,刪,改,查

使用dom4j進行資料的查詢:


public class Test01 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader =new SAXReader();
		Document document= saxReader.read("src/chap06/info.xml");
		Element  ele=document.getRootElement();	//獲取根節點
		
		//查詢
		Iterator<Element> it=ele.elementIterator();//獲得子節點
		while(it.hasNext()) {
			Element brandEle=it.next();
			String brandattr=brandEle.attributeValue("name");
			Iterator<Element> typeIt=brandEle.elementIterator();//子節點裡面的元素節點
			while(typeIt.hasNext()) {
				Element typeEle=typeIt.next();
				String typeAttr=typeEle.attributeValue("name");
				System.out.println("品牌:"+brandattr+"型號:"+typeAttr);
			}
			
		}
	}
}

資料的新增和儲存:

public class Test02 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader=new SAXReader();
		Document doc =saxReader.read("src/chap06/info.xml");
		Element ele=doc.getRootElement();
		
		//新增
		Element brandEle=ele.addElement("Brand");
		brandEle.addAttribute("name","小米");
		brandEle.setText("為發燒而生!");
		
		//儲存文件
		OutputFormat format =OutputFormat.createPrettyPrint();//設定格式,縮排
		format.setEncoding("utf-8");  //指定編碼格式
//		OutputFormat format =new OutputFormat();
		XMLWriter xmlWriter=new XMLWriter(new FileWriter("src/chap06/info.xml"), format);
		xmlWriter.write(doc);		 //將資料寫入當xml文件中
		xmlWriter.close();			//關閉流
	}
}

資料的修改和儲存

public class Test03 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader=new SAXReader();
		Document doc =saxReader.read("src/chap06/info.xml");
		Element ele=doc.getRootElement();
		
		//修改
		Iterator<Element> it=ele.elementIterator();
		while(it.hasNext()) {
			Element brandEle=it.next();
			Attribute attr=brandEle.attribute("name");
			if(attr.getValue().equals("三星")) {
				attr.setValue("sanxing");
			}
		}
		
		//儲存文件
		OutputFormat format =OutputFormat.createPrettyPrint();//設定格式,縮排
		format.setEncoding("utf-8");  //指定編碼格式
		XMLWriter xmlWriter=new XMLWriter(new FileWriter("src/chap06/info.xml"), format);
		xmlWriter.write(doc);		 //將資料寫入當xml文件中
		xmlWriter.close();			//關閉流
		
		
	}
}

資料的刪除和儲存

public class Test04 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader=new SAXReader();
		Document doc =saxReader.read("src/chap06/info.xml");
		Element ele=doc.getRootElement();
		
		//刪除
		Iterator<Element> it=ele.elementIterator();
		while(it.hasNext()) {
			Element brandEle=it.next();
			String brandAttr=brandEle.attributeValue("name");
			if(brandAttr.equals("三星")) {
				ele.remove(brandEle);
			}
		}
		
		//儲存文件
		OutputFormat format =OutputFormat.createPrettyPrint();//設定格式,縮排
		format.setEncoding("utf-8");  //指定編碼格式
		XMLWriter xmlWriter=new XMLWriter(new FileWriter("src/chap06/info.xml"), format);
		xmlWriter.write(doc);		 //將資料寫入當xml文件中
		xmlWriter.close();			//關閉流
	}
}