首页 > 代码库 > dom4j解析XML的CURD操作

dom4j解析XML的CURD操作

在开发JavaWeb项目中通常是利用XML配置文件来提高应用程序的访问效率,而在配置XML的同时,更多时候是对XML进行解析。

一、解析XML配置文件有两种机制:

DOM和SAX的机制:

DOM是将整个XML文件读到内容,形成一个倒状的树形结构。

SAX是一个一个的将XML文件中的元素加载的内存,不会形成一个倒状的树形结构。

常用dom4j的api: 主要使用到SAXReader类

  SAXReader:表示DOM4J解析器

  saxReader.read():加载需要解析的xml文件,返回document对象代表整个xml文件

  document.getRootElement():取得根元素

  element.getName():取得元素名称

  rootElement.elements():取得该元素下的子元素的集合

  element.element("车牌"):导航到"车牌"元素

  element.getText():获取得某个元素的文本内容   

  element.elementText("产地"):导航到"产地"元素并获取该元素的文本内容  

  e.element("车牌").attributeValue("出产时间"):导航到"车牌"元素并获取该元素的“出产时间”属性的值

  element.addElement("单价").setText("15");创建新元素并设置该元素的文本内容

二、在解析dom4j在XML配置文件的过程也需要使用到xpath技术

xpath技术:

在xml文件中快速定义符合xpath条件/路径的唯一/所有的元素

  document.selectNodes(xpath);[取得所有的]

  document.selectSingleNode(xpath);[取得单个的]

以下是dom4j解析XML文件的curd操作代码:

package cn.test.java.dom4j;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.io.Writer;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;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 XMLcurd {    //创建document对象    private Document getDocument() throws DocumentException {        SAXReader saxReader = new SAXReader();        Document document = saxReader.read(new File("src/cn/test/java/dom4j/test.xml"));        return document;    }    //将document写入到指定的XML    private void writerToXML(Document document)    throws UnsupportedEncodingException, FileNotFoundException,    IOException {    //方法一:写入xml文件中包含有中文时    //设置输出格式    OutputFormat outputFormat = OutputFormat.createPrettyPrint();    //设置输出编码方式    outputFormat.setEncoding("UTF-8");    //将内存中的字节流转换为字符流    Writer writer = new OutputStreamWriter(new FileOutputStream("src/cn/test/java/dom4j/test.xml"),"UTF-8");    //构造XMLWriter用于写入XML文件    XMLWriter xmlWriter = new XMLWriter(writer,outputFormat);    xmlWriter.write(document);    xmlWriter.close();}        //XML的增加操作    @Test    public void Create() throws Exception{        Document document = this.getDocument();        Element rootElement = document.getRootElement();        Element firstElement = (Element) rootElement.elements().get(0);        firstElement.addElement("单价").setText("15");//在内存中(字节存储)        writerToXML(document);    }    //XML的修改操作    @Test    public void upDate() throws Exception{        Document document = this.getDocument();        Element rootElement = document.getRootElement();        Element secondElement = (Element) rootElement.elements().get(1);        secondElement.element("产地").setText("深圳");            writerToXML(document);            }    //XML的删除操作    @Test    public void delete() throws Exception{        Document document = this.getDocument();        Element rootElement = document.getRootElement();        List<Element> elementList = rootElement.elements();        for(Element e:elementList){            Element bandElement = e.element("车牌");            e.remove(bandElement);        }        writerToXML(document);    }}

 

dom4j解析XML的CURD操作