Dom4j使用手册

一、Dom4j 的使用

1.XML解析的方式介绍

在日常开发中常见的XML解析方式有如下两种

  1. DOM:要求解析器将整个XML文件全部加载到内存中,生成一个Document对象。
    优点:元素和元素之间保留结构、关系,可以针对元素进行增删查改操作。
    缺点:如果XML文件过大,可能会导致内存溢出。
  2. SAX:是一种速度更快,更加高效的解析方式。它是逐行扫描,边扫描边解析,并且以事件驱动的方式来进行具体的解析,每解析一行都会触发一个事件。
    优点:不会出现内存溢出的问题,可以处理大文件。
    缺点:只能读,不能写。
    解析器就是根据不同的解析方式提供具体的实现,为了方便开发人员来解析XML,有一些方便操作的类库。
    dom4j:比较简单的XML解析的类库。
    Jsoup:功能强大的DOM方式解析的类库,尤其对HTML的解析更加方便。

2.使用dom4j解析XML

java项目集成dom4j
  1. 定义版本
<dom4j.version>2.1.3</dom4j.version>
  1. 添加依赖管理
<dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>${dom4j.version}</version>
 </dependency>
  1. 添加依赖
<dependency>
           <groupId>dom4j</groupId>
           <artifactId>dom4j</artifactId>
</dependency>

使用dom4j解析user.xml

使用dom4j解析xml的步骤
  1. 创建解析器对象
  2. 使用解析器对象读取XML文档生成Document对象
  3. 根据Document对象获取XML的元素(标签)信息
Dom4j重要的API说明
  1. 创建解析器对象
SAXReader saxReader = new SAXReader();
Doucoment document = saxReader.read(Test.class.getClassLoader().getResource("user.xml");//Test.class(测试类),user.xml需要解析的xml文件
  1. org.dom4j.Docunmen常用方法
Element getRootElement();//获取根节点
String getName();//返回标签的名称
List<Element> elements();// 获取标签的子标签
String attributeValue(String name);//获取指定属性
String getText();//获取标签的文本
String elementText(String name);//获取指定名称的自标签的文本,返回子标签文本的值

总结:这样的方法一层层解析,一层层for循环,一个个去拿值,十分的麻烦不够灵活。所以就要使用下面的XPath进行xml的解析。

3.dom4j结合XPath解析XML

XPath可以使用路径表达式来选取XML文档中的元素或者属性节点,节点是沿着路径来选取的。
XPath的官方文档地址:https://zvon.org/xxl/XPathTutorial/General_chi/examples.html

dom4j集成XPath

  1. 定义版本
<jaxen.version>1.1.1</jaxen.version>
  1. 添加依赖管理
<dependency>
    <groupId>jaxen</groupId>
    <artifactId>jaxen</artifactId>
    <version>${jaxen.version}</version>
</dependency>
  1. 添加依赖
<dependency>
    <groupId>jaxen</groupId>
    <artifactId>jaxen</artifactId>
</dependency>

dom4j提供基于XPath的API

Doucument/Element关于XPath的api

Node selectSingleNode(String xpathExpression);//根据XPath获取单个标签(元素/节点)。
List<Node> selectNodes(String xpathExpression);//根据XPath获取多个标签(元素/节点)

XPath的语法

  1. 绝对路径表示方式:以/开头的路径表示绝对路径,绝对路径是从根元素开始写。
    例如:元素/子元素/子子元素…

  2. 相对路径方式:相对于当前节点的元素继续查找的节点,不以/开头…/表示上一个元素./表示当前元素

  3. 全文搜索路径方式://表示无论中间有多少层,直接获取所有子元素满足条件的元素。
    /表示只找一层。

    例如://子元素,//子元素//子子元素,//子元素/子子元素。

  4. 谓语(条件筛选)形式 例如://元素[@attr1=‘value’]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值