java dom4j 入门_java面向对象编程3(7) 之DOM4J _详解

java面向对象编程3(7) 之DOM4J _详解

一.引言&概述

itcast-tools:快捷,限制太多

dom4j:自由,代码比itcast-tools多

环境搭建:

31389f23967695921b2ed3f1907ce4f4.png

二.​​​​​​​ 入门案例:解析XML文件

解析三步:(目的:获取根标签)

bec462e38f9b35e0b3699fb35d8e9421.png

/*

* dom4j入门案例:

* 读取根标签 name和age属性

*

* attributeValue("属性名"); 获取当前标签下 指定名称的属性值

* getName() 获取当前标签的名称

* */

public static void main(String[] args) throws Exception {

//1、解析三步 (目的:获取根标签)

//1.1、创建SAX解析器 (用于读取XML文件)

SAXReader reader = new SAXReader();

//1.2、通过解析器,读取XML文件,返回DOM对象 (读取XML文件,把整个XML,封装到一个DOM对象)

Document dom = reader.read(new File("demo.xml"));

//1.3、通过DOM对象,获取根标签

// 获取根 元素/获取根标签 Element 元素---标签

Element root = dom.getRootElement();

//需求1:获取 根标签list name属性

String name = root.attributeValue("name");

System.out.println(name);

//需求2:获取 根标签的名称

String name1 = root.getName();

System.out.println(name1);

}

三.​​​​​​​ 常见方法

SaxReader对象

read(…) 加载执行xml文档

Document对象

getRootElement() 获得根元素

Element对象

elements(…) 获得指定名称的所有子元素。可以不指定名称

element(…) 获得指定名称第一个子元素。可以不指定名称

getName() 获得当前元素的元素名

attributeValue(…) 获得指定属性名的属性值

elementText(…) 获得指定名称子元素的文本值

getText() 获得当前元素的文本内容

/*

* dom4j常见方法:

* 1. SaxReader对象

a) read(…) 加载执行xml文档

2. Document对象

a) getRootElement() 获得根元素

3. Element对象(每个标签都是元素对象)

a) elements(…) 获得指定名称的所有子元素。可以不指定名称

b) element(…) 获得指定名称第一个子元素。可以不指定名称

c) getName() 获得当前元素的元素名

d) attributeValue(…) 获得指定属性名的属性值

e) elementText(…) 获得指定名称子元素的文本值

f) getText() 获得当前元素的文本内容

* */

public static void main(String[] args) throws Exception {

//1、解析三步

//1.1、创建SAX解析器

SAXReader reader = new SAXReader();

//1.2、通过解析器,读取XML文件,DOM对象

Document dom = reader.read(new File("demo.xml"));

//1.3、通过DOM对象,根标签

Element root = dom.getRootElement();

//需求1:获取classes标签 dom4j:通过父获取子

Element classes = root.element("classes");

System.out.println(classes.getName());

//需求2:获取classes中的name子标签的 内容体文本

//1.1、获取name标签

Element name = classes.element("name");

//1.2、获取name标签的内容体文本

String text = name.getText();

System.out.println(text);

//需求3:获取classes中的name子标签的 内容体文本

String n = classes.elementText("name");

System.out.println(n);

//需求4:获取根标签下 所有的子标签(stu,stu,classes)

List list = root.elements();

System.out.println(list.size());

//需求5:获取根标签下 所有的stu子标签

List list2 = root.elements("stu");

System.out.println(list2.size());

}

四.​​​​​​​ 解析原理

XML解析原理:

DOM:一次性读取整个XML文档,把一个XML文档 封装成 document文档对象(DOM对象)

e118b41a365e991a75ee06859624509a.png

优点:DOM解析可以进行读和写

缺点:DOM解析无法加载大XML文件

SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。

并以事件驱动的方式进行具体解析,每执行一行,都将触发对应的事件。(了解)

优点:加载解析大XML

缺点:无法写数据

Dom4j:结合了SAX和DOM的优点

SAX解析器-----》解析----》DOM树

请给努力中的自己点个赞哦!

每天进步一点点`~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值