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 }