DOM4J实例,详细解说怎么用DOM4J编程
主要类:Demo1.java,一个DOM4J实例,详细解说怎么用DOM4J编程
package com.demo;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
public class Demo1 {
// 获取第一个书名节点的值
@Test
public void read() throws DocumentException{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
String value = document.getRootElement().element("book").element("bookname").getText();
System.out.println(value);
}
// 获取第二个书名节点的值
@Test
public void read1() throws DocumentException{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
Element book = (Element)root.elements("book").get(1);
Element bookname = book.element("bookname");
System.out.println(bookname.getText());
}
// 获取书名节点的属性值
@Test
public void read2() throws DocumentException{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
String value = root.element("book").element("bookname").attributeValue("id");
System.out.println(value);
}
// 修改
@Test
public void update() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
root.element("book").element("price").setText("60元");
/**
* 如果xml文件中有中文则需要转码,纯英文编码不用转
* XMLWriter writer = new XMLWriter(new FileWriter("src/book.xml"));
writer.write(document);
writer.close();
转码加入xml文件的一种方法
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF-8"));
writer.write(document);
writer.close();
* */
//转码加入xml文件的另一种方法
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
// 删除
@Test
public void delete() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
Element price = root.element("book").element("price");
price.getParent().remove(price);
//转码加入xml文件的一种方法
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF-8"));
writer.write(document);
writer.close();
}
//添加 给第一本书添加一个售价
@Test
public void insert() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//创建一个售价节点
Element price = DocumentHelper.createElement("售价");
price.setText("40元");
root.element("book").add(price);
//转码加入xml文件的另一种方法
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
//指定位置添加 给第一本书添加一个售价
@Test
public void insert1() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//创建一个售价节点
Element price = DocumentHelper.createElement("售价");
price.setText("50元");
//指定位置添加,bookname和author中间的位置
List list = root.element("book").elements();
list.add(1,price);
//转码加入xml文件的另一种方法
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
}