您的位置:首页 > 其它

dom4j快速入门

2014-11-20 08:26 232 查看
package dom4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

import org.dom4j.Document;
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;

import java.util.*;
//dom4j具有更强的灵活性,操作方便,下面是dom4j的使用方法
public class demo1 {
//下面方法显示使用dom4j进行解析的开始步骤
@Test
public void Test1() throws Exception{
//1.首先新建一个SAXReader()
SAXReader reader = new SAXReader();
//2.use the method provided by SAXReader to read file.
Document document = reader.read(new File("src/Student.xml"));
//3.use the mehtod provided by Document to get root Element
Element element  = document.getRootElement();
List(element);
}
//递归遍历所有元素
public void List(Element element){
System.out.println(element.getName());
List<Element> list = element.elements();
for(int i = 0; i < list.size(); i++){
Element ele = list.get(i);
List(ele);
}
}
@Test
//if you want to get the attribute of an element, you can use the method attributeValue()
//provided by Element
public void getAttribute() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/Student.xml"));
Element element = document.getRootElement().element("student");
System.out.println(element.attributeValue("examid"));
}
//add an new Node to XML
@Test
public void addNode() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/Student.xml"));
//创建一个新节点,创建新节点是通过DocumentHelper里的createElement()方法
//在方法里面要加上要创建的节点名称,调用Element的setText()方法可以为节点设置内容
Element e = DocumentHelper.createElement("location");
/*注意:Element继承自brench接口,此接口具有addElement()方法,调用此方法并传入相应的参数可以添加新的节点
例如:Element e = document.getRootElement();
e.addElement("name").setText("张三");
brench的addElement()返回的是Element这便于以后的操作
*/

e.setText("南京");
//将新节点添加到指定节点下面
Element e1 = document.getRootElement().element("student");
e1.add(e);
//完成之后要将Document重新写入到目标文档,写入时注意中文乱码的问题,由于xml文档内部指定的是utf-8编码
//所以在使用输出流的时候要选用可以指定编码的输出流,而FileOutputStream可以指定编码。
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/Student.xml"), "utf-8"),format);
writer.write(document);
writer.close();
}
@Test
public void addNode2() throws Exception{
//获取要插入节点的父节点
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/Student.xml"));
//创建一个新的节点
Element e = DocumentHelper.createElement("sex");
e.setText("female");
//获取根 节点的孩子节点
List list = document.getRootElement().element("student").elements();
//向第二个位置中加入想要加入的节点.
list.add(2, e);
//将更新的document写入目标文件
//注意乱码问题
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/Student.xml"), "utf-8"),format);
writer.write(document);
writer.close();
}
//how to remove a Node from XML
@Test
public void removeNode() throws Exception {
//获取document
SAXReader reader = new SAXReader();
Document document = reader.read("src/Student.xml");
//获取父亲节点
Element e = (Element)document.getRootElement().element("student").elements("sex").get(0);
e.getParent().remove(e);
//更新
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/Student.xml"), "utf-8"),format);
writer.write(document);
writer.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: