dom4j學習總結
二、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();
}四、亂碼問題

解決方法:
format.setEncoding("UTF-8");
并且用字節流輸出

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