• Dom4j解析XML


           Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4jAPI相对要复杂一些,但它提供了比JDOM更好的灵活性。

           Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j.

    使用Dom4j开发,需下载dom4j相应的jar文件。

    DOM4j中,获得Document对象的方式有三种:

      1.读取XML文件,获得document对象            

                       SAXReaderreader = new SAXReader();
     
                Document   document = reader.read(new File("input.xml"));

      2.解析XML形式的文本,得到document对象.

                     String text = "<members></members>";
                 Document document= DocumentHelper.parseText(text);

      3.主动创建document对象.

                    Document document= DocumentHelper.createDocument();
     
               //创建根节点

                      Element root = document.addElement("members");

    XML文档 book.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <书架>
      <书 name="工具书">
        <书名>Java就业培训教程</书名>  
        <售价>19元</售价>
        <作者>张孝祥</作者>  
        <售价>209元</售价>  
        <售价>19元</售价>
      </>  
      <>
        <书名>JavaScript网页开发</书名>  
        <作者>张孝祥</作者>  
        <售价>28.00元</售价>
      </>
    </书架>

    解析类Dom4jXml.java

    import java.io.FileOutputStream;
    import java.util.List;
    
    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;
    
    public class Dom4jXml {
        // 读取xml中元素属性值
        @Test
        public void read() throws Exception {
            SAXReader reader = new SAXReader();
            Document document = reader.read("src/book1.xml");
    
            Element root = document.getRootElement();
            Element bookname = root.element("书").element("书名");
            System.out.println(bookname.getText());
        }
    
        // 向xml文档中添加<售价>19元</售价>
        @Test
        public void add() throws Exception {
            SAXReader reader = new SAXReader();
            Document document = reader.read("src/book1.xml");
    
            Element price = DocumentHelper.createElement("售价");// DocumentHelper
                                                                // dom4j中创建标签的类
            price.setText("29元");
    
            document.getRootElement().element("书").add(price);
    
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("UTF-8");
    
            XMLWriter writer = new XMLWriter(new FileOutputStream("src/book1.xml"));
            writer.write(document);
    
            writer.close();
    
        }
    
        // 将xml文档中的<售价>29元</售价> 更新为<售价>39元</售价>
        @Test
        public void update() throws Exception {
            SAXReader reader = new SAXReader();
            Document document = reader.read("src/book1.xml");
    
            Element price = (Element) document.getRootElement().element("书")
                    .elements("售价").get(0);//通过elements得到多个售价元素,使用get(i)方法得到要更新的节点
            price.setText("39元");
    
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("UTF-8");
    
            XMLWriter writer = new XMLWriter(new FileOutputStream("src/book1.xml"));
            writer.write(document);
    
            writer.close();
    
        }
        //删除xml指定元素属性
        @Test
        public void delete() throws Exception{
            SAXReader reader = new SAXReader();
            Document document = reader.read("src/book1.xml");
            
            Element price = (Element) document.getRootElement().element("书")
            .elements("售价").get(0);
            price.getParent().remove(price);
            
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("UTF-8");
    
            XMLWriter writer = new XMLWriter(new FileOutputStream("src/book1.xml"));
            writer.write(document);
    
            writer.close();
        }
        //向指定位置添加元素
        @SuppressWarnings("unchecked")
        @Test
        public void adddir() throws Exception{
            SAXReader reader = new SAXReader();
            Document document = reader.read("src/book1.xml");
            
            Element price =DocumentHelper.createElement("售价");
            price.setText("45元");
            
            
            List list =document.getRootElement().element("书").elements();//用list得到<书>节点下所有元素
            list.add(2,price);//通过list.add(item,element)指定位置添加元素
        
            
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("UTF-8");
    
            XMLWriter writer = new XMLWriter(new FileOutputStream("src/book1.xml"));
            writer.write(document);
    
            writer.close();
    
        }
    }
  • 相关阅读:
    数据库(一)数据库优点,常用数据库,创建数据库,设计创建数据表,数据类型,数据表操作,完整性约束(非空,主键,唯一,默认,外键)
    mybatis 中mapper文件 if判断 <if test="validCoupon == '1'">类似问题
    如何解决JavaScript中UUID作为方法参数在方法中无法传递而数字却正常传递的问题
    js 将子页面得到的数据返回并赋值给父页面
    在IE下面报错"缺少函数",函数明明是有的,其他浏览器下正常
    javaPOI把excel转换成html 中去掉序号列
    linux 常用命令(个人用)
    mysql 统计 group
    es 复制索引
    elasticsearch 判断某个字段是否含有大写字母
  • 原文地址:https://www.cnblogs.com/lichone2010/p/3127849.html
Copyright © 2020-2023  润新知