• dom4j创建和解析xml文档


    DOM4J解析

         特征:

          1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。

          2、它使用接口和抽象基本类方法。

          3、具有性能优异、灵活性好、功能强大和极端易用的特点。

          4、是一个开放源码的文件

    jar包:dom4j-1.6.1.jar

    创建 book.xml:

     1 package com.example.xml.dom4j;
     2 
     3 import java.io.FileWriter;
     4 import org.dom4j.Document;
     5 import org.dom4j.DocumentHelper;
     6 import org.dom4j.Element;
     7 import org.dom4j.io.OutputFormat;
     8 import org.dom4j.io.XMLWriter;
     9 /**
    10  * dom4j创建xml文档示例
    11  *
    12  */
    13 public class Dom4JTest4 {
    14     public static void main(String[] args) throws Exception {
    15         // 第二种方式:创建文档并设置文档的根元素节点
    16         Element root2 = DocumentHelper.createElement("bookstore");
    17         Document document2 = DocumentHelper.createDocument(root2);
    18 
    19         // 添加一级子节点:add之后就返回这个元素
    20         Element book1 = root2.addElement("book");
    21         book1.addAttribute("id", "1");
    22         book1.addAttribute("name", "第一本书");
    23         // 添加二级子节点
    24         book1.addElement("name").setText("遇见未知的自己");
    25         book1.addElement("author").setText("张德芬");
    26         book1.addElement("year").setText("2014");
    27         book1.addElement("price").setText("109");
    28         // 添加一级子节点
    29         Element book2 = root2.addElement("book");
    30         book2.addAttribute("id", "2");
    31         book2.addAttribute("name", "第二本书");
    32         // 添加二级子节点
    33         book2.addElement("name").setText("双城记");
    34         book2.addElement("author").setText("狄更斯");
    35         book2.addElement("year").setText("2007");
    36         book2.addElement("price").setText("29");
    37         
    38         // 设置缩进为4个空格,并且另起一行为true
    39         OutputFormat format = new OutputFormat("    ", true);
    40  
    41         // 另一种输出方式,记得要调用flush()方法,否则输出的文件中显示空白
    42         XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("book.xml"),format);
    43         xmlWriter3.write(document2);
    44         xmlWriter3.flush();
    45         // close()方法也可以
    46 
    47     }
    48 }

    运行结果:

    解析 book.xml:

     1 package com.example.xml.dom4j;
     2 
     3 import java.io.File;
     4 import java.util.Iterator;
     5 import java.util.List;
     6 import org.dom4j.Attribute;
     7 import org.dom4j.Document;
     8 import org.dom4j.DocumentException;
     9 import org.dom4j.Element;
    10 import org.dom4j.io.SAXReader;
    11 /**
    12  * dom4j解析xml文档示例
    13  *
    14  */
    15 public class Dom4JTest3 {
    16     
    17     public static void main(String[] args) {
    18         // 解析books.xml文件
    19         // 创建SAXReader的对象reader
    20         SAXReader reader = new SAXReader();
    21         try {
    22             // 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。
    23             Document document = reader.read(new File("book.xml"));
    24             // 通过document对象获取根节点bookstore
    25             Element bookStore = document.getRootElement();
    26             System.out.println("根节点名:"+bookStore.getName());
    27             // 通过element对象的elementIterator方法获取迭代器
    28             Iterator it = bookStore.elementIterator();
    29             // 遍历迭代器,获取根节点中的信息(书籍)
    30             while (it.hasNext()) {
    31                 System.out.println("=====开始遍历子节点=====");
    32                 Element book = (Element) it.next();
    33                 System.out.println("子节点名:"+book.getName());
    34                 // 获取book的属性名以及 属性值
    35                 List<Attribute> bookAttrs = book.attributes();
    36                 for (Attribute attr : bookAttrs) {
    37                     System.out.println("属性名:" + attr.getName() + "--属性值:"
    38                             + attr.getValue());
    39                 }
    40                 Iterator itt = book.elementIterator();
    41                 while (itt.hasNext()) {
    42                     Element bookChild = (Element) itt.next();
    43                     System.out.println("节点名:" + bookChild.getName() + "--节点值:" + bookChild.getStringValue());
    44                 }
    45                 System.out.println("=====结束遍历该节点=====");
    46             }
    47         } catch (DocumentException e) {
    48             e.printStackTrace();
    49         }
    50     }
    51 
    52 }

    运行结果:

  • 相关阅读:
    2016年3月9日~10日,杨学明老师为武汉某著名通信企业提供内训课程服务!
    打造高效率产品测试体系--产品测试管理(深圳,2016.3.18~19)
    互联网产品上线前,做些什么——产品、开发、测试的视角
    2016年1月16日,《互联网项目管理高级实务》内训在上海某高科技企业成功举办!
    用C++对C++语法格式进行分析
    mysql主从配置
    Windows Zip/CentOS/Radhat系统安装Mysql5.7.x方法
    c++预声明类引发的无法解析外部符号问题
    解决VS2015单元测试“未能设置用于运行测试的执行上下文”问题
    扩展Linux磁盘空间
  • 原文地址:https://www.cnblogs.com/heizai002/p/7009143.html
Copyright © 2020-2023  润新知