使用dom4j类操作xml文档

dom4j操作xml数据

1.Document对象相关
①读取XML文件,获得document对象.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));

②解析XML形式的文本,得到document对象.
String text = "";
Document document = DocumentHelper.parseText(text);

③主动创建document对象.
Document document = DocumentHelper.createDocument();
// 创建根节点
Element root = document.addElement("members");

2.节点相关
①获取文档的根节点.
Element rootElm = document.getRootElement();

②取得某节点的单个子节点.
Element memberElm=root.element("member");// "member"是节点名

③取得节点的文本.
String text=memberElm.getText();
String text=root.elementText("name");这个是取得根节点下的name字节点的文本

④取得某节点下指定名称的所有节点并进行遍历.
List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();) {
    Element elm = (Element) it.next();
    // do something
}

⑤对某节点下的所有子节点进行遍历.
for(Iterator it=root.elementIterator();it.hasNext();){
    Element element = (Element) it.next();
    // do something
}

⑥在某节点下添加子节点.
Element ageElm = newMemberElm.addElement("age");

⑦设置节点文字.
ageElm.setText("29");

⑧删除某节点.
parentElm.remove(childElm); // childElm是待删除的节点,parentElm是其父节点


3.属性相关.
①取得节点的指定的属性
Element root = document.getRootElement();
Attribute attribute = root.attribute("size"); // 属性名name

②取得属性的文字
String text = attribute.getText();
String text2 = root.element("name").attributeValue("firstname");
//这个是取得根节点下name子节点的firstname属性的值.

③遍历某节点的所有属性
Element root = document.getRootElement();
for(Iterator it = root.attributeIterator();it.hasNext();){
    Attribute attribute = (Attribute) it.next();
    String text = attribute.getText();
    System.out.println(text);
}

④设置某节点的属性和文字.
newMemberElm.addAttribute("name", "sitinspring");

⑤设置属性的文字
Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");

⑥删除某属性
Attribute attribute=root.attribute("size");// 属性名name
root.remove(attribute);

4.将文档写入XML文件.
①文档中全为英文,不设置编码,直接写入.
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(document);
writer.close();

②文档中含有中文,设置编码格式再写入.
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); // 指定XML编码
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();

 

实例:

 1 package com.simple.snow;
 2 
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 import java.util.ArrayList;
 6 import java.util.Calendar;
 7 import java.util.HashSet;
 8 import java.util.List;
 9 import java.util.Set;
10 import org.dom4j.Document;
11 import org.dom4j.DocumentHelper;
12 import org.dom4j.Element;
13 import org.dom4j.io.XMLWriter;
14 
15 import com.alibaba.fastjson.JSONObject;
16 
17 public class DealXmlData {
18     public static void main(String[] ar) {
19         String fileName = "d:\\text.xml";
20 
21         Document document = DocumentHelper.createDocument();// 建立document对象,用来操作xml文件
22 
23         Element booksElement = document.addElement("books");// 建立根节点
24 
25         booksElement.addComment("This is a test for dom4j ");// 加入一行注释
26 
27         Element bookElement = booksElement.addElement("book");// 添加一个book节点
28 
29         bookElement.addAttribute("show", "yes");// 添加属性内容
30 
31         Element titleElement = bookElement.addElement("title");// 添加文本节点
32 
33         titleElement.setText("ajax in action");// 添加文本内容
34         
35         try {
36             XMLWriter writer = new XMLWriter(new FileWriter(new File(fileName)));
37             writer.write(document);
38             writer.close();
39         } catch (Exception e) {
40             e.printStackTrace();
41         }
42     }
43 }

 

你可能感兴趣的:(使用dom4j类操作xml文档)