java中的DOM4J解析XML
阿新 • • 發佈:2018-12-04
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(); //關閉流
}
}