dom4j學習總結

openkk 12年前發布 | 27K 次閱讀 XML XML操作類庫
dom4j是由JDOM開發團隊分裂后開發出來的包;在hibernate、JAXM中都使用了dom4j;
性能來說:Dom4j>JDom>JAXP;

二、dom4j API


DocumentHelper類中有:


(1)Document document = DocumentHelper.createDocument(); //創建一個document對象,通常用于新建一個xml文檔

(2)Element element = DocumentHelper.createElement(); //創建一個element對象,即創建一個標簽

(3)Document document = DocumentHelper.parseText(String xml); //將xml字符串轉換成以document為根節點的DOM樹

 

SAXReader類中有:


(1)SAXReader reader = new SAXReader();

(2)Document document  = reader.read(new File("1.xml")); //讀取并解析1.xml文檔,并返回document

 

Document類中有:


(1)String text = document.asXML(Document); //將一顆DOM樹轉為XML字符串

(2)Element root = document.getRootElement(); //獲得根節點

 

Element中有:


(1)Element newelem = elem.addElement("child"); //加入名為child的子標簽,并返回此element

(2)newelem.addAttribute("name","value"); //標簽添加一個屬性

(3)newelem.addText("xxxx"); //為標簽添加一個標簽值

(4)newelem.getText(); //獲得標簽的標簽值

(5)String value = newelem.attributeValue("name"); //獲得標簽的屬性值

(6)Iterator iter = newelem.attributeIterator() ; //標簽的屬性迭代器

(7)List childs = newelem.elements(); //獲得標簽的全部子元素

(8)Element child = newelem.element("name"); //獲得標簽的子標簽中的多個標簽中的第一個元素

(9)List childs = newelem.elements("name"); //獲得標簽的子標簽中的全部標簽

(10)newelem.remove(elem); //刪除elem標簽

 

XMLWriter類中有:


(1)XMLWriter writer = new XMLWriter(OutputStream out,OutputFormat format);

(2)writer.write(document); //輸出document

(3)writer.close(); //關閉XMLWriter流

 

OutputFormat類中有:


(1)OutputFormat format = OutputFormat.createPrettyFormat(); //輸出時排版整齊

(2)OutputFormat format = OutputFormat.createCompactFormat(); //輸出時排版緊實

(3)format.setEncoding("UTF-8"); //設置中的encoding屬性,默認為UTF-8

 

Attribute類中有:


(1)attr.setValue("value"); //設置屬性

(2)String value = attr.getValue();

三、dom4j中的CRUD

 

1.Create

 

創建一個文檔:

 private static void create() throws Exception {
        Document document = DocumentHelper.createDocument();
        Element person = DocumentHelper.createElement("person");
        document.add(person);
        Element name = person.addElement("name").addAttribute("a", "x").addText("xiazdong");
        Element age = person.addElement("age").addText("20");
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(new FileOutputStream("output.xml"),format);
        writer.write(document);
        writer.close();
    }

插入:

private static void insert(Document document) throws Exception {
    Element root = document.getRootElement();
    List list =  root.elements("person");
    Element person = (Element)list.get(1);
    Element tmpElement = person.addElement("tmpChild");
    tmpElement.setText("tmp");              //添加標簽值
    tmpElement.addAttribute("tmpname", "tmpvalue"); //添加屬性
    Element tmp2 = DocumentHelper.createElement("tmpChild2");//創建一個element
    tmp2.setText("tmp2");
    list.add(1,tmp2);   //在指定位置添加元素
    XMLWriter writer = new XMLWriter(new FileOutputStream("1.xml"));
    writer.write(document);
    writer.close(); 
}

2.Read

 

private static void read(Document document) throws Exception{
    Element root = document.getRootElement();
    Element person = (Element) root.elements("person").get(1);
    String value = person.element("name").getText();
    String attri = person.element("name").attributeValue("a");
    System.out.println(value);
    System.out.println(attri);
}


3.Update

 

private static void update(Document document) throws Exception{
    Element root = document.getRootElement();
    Element name = root.element("person").element("name");
    name.setText("xiazdong");               //更新標簽值
    name.attribute("a").setValue("bb");     //更新屬性值
    OutputFormat format = OutputFormat.createPrettyPrint();
    format.setEncoding("utf-8");
    XMLWriter writer = new XMLWriter(new FileOutputStream("1.xml"),format);
    writer.write(document);
    writer.close();
}

4.Delete

private static void delete(Document document) throws Exception {
    Element root = document.getRootElement();
    Element name = root.element("person").element("name");
    name.remove(name.attribute("a"));       //刪除attribute
    name.getParent().remove(name);          //刪除element
    OutputFormat format = OutputFormat.createPrettyPrint();
    format.setEncoding("utf-8");
    XMLWriter writer = new XMLWriter(new FileOutputStream("1.xml"),format);
    writer.write(document);
    writer.close();
}

四、亂碼問題



在導入中文時,可能會出現亂碼問題,亂碼圖示:

 

dom4j學習總結

解決方法:

format.setEncoding("UTF-8");

并且用字節流輸出

 

dom4j學習總結

 轉自:http://blog.csdn.net/xiazdong/article/details/7294109

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!