使用Dom4j解析XML文档

使用Dom4j解析XML文档

Dmo4j是什么?

​ dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的,dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点.

使用Dom4j解析xml文件的原理

​ DOM 将整个XML文档加载到内存,生成一个DOM树,并获得一个Document对象,通过Document对象就可以对DOM进行操作.

结构模型

  • 代码

    <?xml version="1.0" encoding="UTF-8"?>
    <books>
      <book id="0001">
        <name>JavaWeb开发教程</name>
        <author>张孝祥</author>
        <sale>100.00元</sale>
      </book>
      <book id="0002">
        <name>三国演义</name>
        <author>罗贯中</author>
        <sale>100.00元</sale>
      </book>
    </books>
    
  • 模型

    在这里插入图片描述

    DOM中的核心概念就是节点,在XML文档中的元素、属性、文本,在DOM中都是节点!所有的节点都封装到了Document对象中。

Dom4j的使用

  1. 导入jar包

在这里插入图片描述

  1. 使用的总概念

    dom4j 必须使用核心类SaxReader加载xml文档获得Document,通过Document对象获得文档的根元素,然后就可以操作了。

  2. 常用方法

    • SAXReader对象

      1.new SAXReader() -> SAXReader的构造方法, 用于创建其实例对象 
      2.Document read(String url)  -> read方法, 用于指定要加载的xml文件, 参数指定xml文件所在的地址, 返回一个Document对象
      
    • Document对象

      Element getRootElement() -> 获得根元素
      
    • Element对象

      1.List elements([String element]) -> 获取指定名称的所有子元素, 可以不指定名称
      2.Element element([String ele]) -> 获得指定名称第一个子元素。可以不指定名称
      3.String getName() -> 获得当前元素的元素名
      4.String attributeValue(String attrName)  -> 获得指定属性名的属性值
      5.String elementText(Sting ele) -> 获得指定名称子元素的文本值
      6.String getText()  -> 获得当前元素的文本内容
      
    • 解析代码实现

      • xml文件

        <?xml version="1.0" encoding="UTF-8"?>
        <books>
          <book id="0001">
            <name>JavaWeb开发教程</name>
            <author>张孝祥</author>
            <sale>100.00元</sale>
          </book>
          <book id="0002">
            <name>三国演义</name>
            <author>罗贯中</author>
            <sale>100.00元</sale>
          </book>
        </books>
        
      • 解析代码

        public class Demo {
              public static void main(String[] args) throws DocumentException {
                    SAXReader reader = new SAXReader();
                    Document document = reader.read(Demo.class.getResourceAsStream("/books.xml"));
                    //获取根元素 books
                    Element elemRoot = document.getRootElement();
                    //获取根元素的所有子元素 book
                    List<Element>list = elemRoot.elements();
                    //遍历集合 获取每一个book
                    for(Element element : list){
                          //获取book的id属性
                          String id =element.attributeValue("id");
                          System.out.println("id : "+ id);
                          //获取book下的所有子元素 name,author,sale
                          List<Element>listElem = element.elements();
                          //遍历集合 获取每一个子元素
                          for(Element elem : listElem){
                                //元素名
                                String name = elem.getName();
                                //文本值
                                String text = elem.getText();
                                System.out.println("--- " + name + " : " + text);
                         }
                   }
             }
        }
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值