Dom

2.2 Dom4j的基本使用
目标

  • 知道了什么是XML的解析, 那么接下来我们来学习一个最为简单常见的解析开发包 - Dom4j

路径

  • DOM解析原理及结构模型
  • 常用的方法
  • 方法演示

讲解

2.2.1 DOM解析原理及结构模型

  • 解析原理 XML DOM 和 HTML DOM一样,XML DOM 将整个XML文档加载到内存,生成一个DOM树,并获得一个Document对象,通过Document对象就可以对DOM进行操作。以下面books.xml文档为例。

`

``java
  <?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>

> 结构模型
> ![在这里插入图片描述](https://img-blog.csdnimg.cn/202101042029418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Z1X2hvdXFpbmc=,size_16,color_FFFFFF,t_70DOM中的核心概念就是节点,在XML文档中的元素、属性、文本,在DOM中都是节点!所有的节点都封装到了Document对象中。
> 2.2.2  使用步骤
> 
> > 1. 导入jar包  dom4j-1.6.1j.jar
> > 2. 创建解析器
> > 3. 读取xml 获得document对象 
> > 4. 得到根元素
> > 5. 根据根元素获取对于的子元素或者属性
> 
> 2.2.3 常用的方法
> 1.创建解析器对象: SAXReader sr = new SAXReader();
> 2.读取xml文件进行解析,生成Document对象---使用SAXReader方法
>     Document read(String fileName);
> 3.使用Document对象获取根元素
>     Element getRootElement();
> 4.使用元素获取子元素--->使用Element方法
>     public List elements()     				: 获取当前元素的所有子元素
>     public String getName()					: 获取元素的元素名
>     public String getText()					: 获取当前元素的文本值
>     public String attributeValue(String name)	: 获取当前元素下某个属性的值,传入属性名
>     public Element element(String name)		: 根据元素名获取指定子元素(如果有多个就获取到第一个)
>     public String elementText(String name)	: 获取指定子元素的文本值,参数是子元素名称
> 2.2.4 方法演示
> 
> - xml public class Test {
>     public static void main(String[] args) throws Exception {
>         /*
>             dom4j解析xml:
>                 使用步骤:
>                     1.下载dom4j的jar包
>                     2.拷贝jar包到模块的lib文件夹下
>                     3.把jar包添加到模块的classpath路径下
>                     4.创建解析器对象
>                     5.读取xml文件进行解析,生成Document对象
>                     6.使用Document对象获得xml文件中的标签,属性,内容...
>                         6.1 使用Document对象获取根元素
>                         6.2 使用根元素获取子元素
>                         ...
>                 常用方法:
>                     1.创建解析器对象: SAXReader sr = new SAXReader();
>                     2.读取xml文件进行解析,生成Document对象---使用SAXReader方法
>                         Document read(String fileName);
>                     3.使用Document对象获取根元素
>                         Element getRootElement();
>                     4.使用元素获取子元素--->使用Element方法
>                         public List elements()     				: 获取当前元素的所有子元素
>                         public String getName()					: 获取元素的元素名
>                         public String getText()					: 获取当前元素的文本值
>                         public String attributeValue(String name)	: 获取当前元素下某个属性的值,传入属性名
>                         public Element element(String name)		: 根据元素名获取指定子元素(如果有多个就获取到第一个)
>                         public String elementText(String name)	: 获取指定子元素的文本值,参数是子元素名称
> 
>          */
>         // 1.创建解析器对象
>         SAXReader sr = new SAXReader();
> 
>         // 2..读取xml文件进行解析,生成Document对象
>         Document d = sr.read("day14\\books.xml");
> 
>         // 3.使用Document对象获取根元素
>         Element rootE = d.getRootElement();
>         System.out.println("根元素的名称:" + rootE.getName());// books
> 
>         // 4.获取根元素下的所有子元素
>         List list = rootE.elements();// 2个book
> 
>         // 5.循环遍历list集合
>         for (Element e : list) {
>             System.out.println("book标签id的属性值:" + e.attributeValue("id"));
> 
>             // 方式一:
>             /*// 6.获取book标签下的所有子标签
>             List list1 = e.elements();
>             // 7.循环遍历list1集合
>             for (Element e1 : list1) {
>                 System.out.println("元素的名称:" + e1.getName() + ",元素的文本:" + e1.getText());
>             }*/
> 
>             // 方式二:
>             // 获取book标签下指定的子元素
>             Element e1 = e.element("name");
>             Element e2 = e.element("author");
>             Element e3 = e.element("sale");
>             System.out.println("子标签名:" +e1.getName());
>             System.out.println("子标签名:" +e2.getName());
>             System.out.println("子标签名:" +e3.getName());
> 
>             // 获取book标签下指定子元素的文本
>             String e11 = e.elementText("name");
>             String e22 = e.elementText("author");
>             String e33 = e.elementText("sale");
>             System.out.println("子标签的文本:" +e11);
>             System.out.println("子标签的文本:" +e22);
>             System.out.println("子标签的文本:" +e33);
>         }
>     } }

你可能感兴趣的:(java)