• 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);
        }
    }
  • 相关阅读:
    git技能
    iOS 命名规则
    iOS crash 报错类型
    iOS 面试相关
    【转】app后端如何选择合适的数据库产品
    App的token机制
    【转】Spring注解详解
    spring mvc ModelAndView 404的原因
    ibatis 环境搭建(1)
    Android中的Selector的用法
  • 原文地址:https://www.cnblogs.com/luihengk/p/3970025.html
Copyright © 2020-2023  润新知