xml和dom4j解析技术学习笔记

目录

  1. XML
  2. dom4j技术

XML

今日任务
1.XML 语法
2.Dom4j 解析
课堂笔记
今天的内容

1.XML 简介

什么是xml?
xml 是可扩展的标记性语言。(可扩展的意思是标签的命名是按需求定义的,是可以扩展的,并不是全部统一规定好的)
xml 的作用?
xml 的主要作用有:
1、用来保存数据,而且这些数据具有自我描述性
范例:
在这里插入图片描述

2、它还可以做为项目或者模块的配置文件
在这里插入图片描述

3、还可以做为网络传输数据的格式(现在JSON 为主)。

3、xml 语法

  1. 文档声明。
  2. 元素(标签)
  3. xml 属性
  4. xml 注释
  5. 文本区域(CDATA 区)

3.1、文档声明
我们先创建一个简单XML 文件,用来描述图书信息。
1)创建一个xml 文件
在这里插入图片描述
文件名:
在这里插入图片描述
2)图书有id 属性表示唯一标识,书名,有作者,价格的信息

<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 声明version 是版本的意思encoding 是编码-->
<books> <!-- 这是xml 注释-->
	<book id="SN123123413241"> <!-- book 标签描述一本图书id 属性描述的是图书的编号-->
		<name>java 编程思想</name> <!-- name 标签描述的是图书的信息-->
		<author>华仔</author> <!-- author 单词是作者的意思,描述图书作者-->
		<price>9.9</price> <!-- price 单词是价格,描述的是图书的价格-->
	</book>
	<book id="SN12341235123"> <!-- book 标签描述一本图书id 属性描述的是图书的编号-->
		<name>葵花宝典</name> <!-- name 标签描述的是图书的信息-->
		<author>班长</author> <!-- author 单词是作者的意思,描述图书作者-->
		<price>5.5</price> <!-- price 单词是价格,描述的是图书的价格-->
	</book>
</books>

在浏览器中可以查看到文档
在这里插入图片描述

在这里插入图片描述
有错:
在这里插入图片描述

3.2、xml 注释
在这里插入图片描述
3.3、元素(标签)
在这里插入图片描述
1)什么是xml 元素
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 <book>
        <name><![CDATA[
        <<<<<<<<<<<山海经>>>>>>>>>
        ]]]></name>
        <author><![CDATA[?不知道!@#¥%……&*(]]]]></author>
        <price><![CDATA[_*&^&(1000000)]]]]></price>
    </book>

在这里插入图片描述
在这里插入图片描述

返回目录

在这里插入图片描述
解压后:
在这里插入图片描述
3.2、dom4j 目录的介绍:

在这里插入图片描述
在这里插入图片描述
2)lib 目录
在这里插入图片描述
3)src 目录是第三方类库的源码目录:
在这里插入图片描述
在这里插入图片描述
需要解析的books.xml 文件内容

<?xml version="1.0" encoding="UTF-8"?>
<books>
<book sn="SN12341232">
<name>辟邪剑谱</name>
<price>9.9</price>
<author>班主任</author>
</book>
<book sn="SN12341231">
<name>葵花宝典</name>
<price>99.99</price>
<author>班长</author>
</book>
</books>

解析获取Document 对象的代码
第一步,先创建SaxReader 对象。这个对象,用于读取xml 文件,并创建Document

/*
* dom4j 获取Documet 对象
*/
@Test
public void getDocument() throws DocumentException {
	// 要创建一个Document 对象,需要我们先创建一个SAXReader 对象
	SAXReader reader = new SAXReader();
	// 这个对象用于读取xml 文件,然后返回一个Document。
	Document document = reader.read("src/books.xml");
	//上面的方法简单,这里再扩展两个获取Document对象的方法
	//1.Document document = reader.read(new File("filePathname"));
	//2.Document document = reader.read(类名.class.getClassLoader.getResource("路径名"));
	// 打印到控制台,看看是否创建成功
	System.out.println(document);
}

IDEA的Maven创建模块中的相对路径问题(重点在区分什么是项目什么是模块,相对路径前要把模块路径包含进去,个人遇到的就是复制相对路径却没有包含模块路径而出错)
在这里插入图片描述

/*
* 读取xml 文件中的内容
*/
@Test
public void readXML() throws DocumentException {
// 需要分四步操作:
// 第一步,通过创建SAXReader 对象。来读取xml 文件,获取Document 对象
// 第二步,通过Document 对象。拿到XML 的根元素对象
// 第三步,通过根元素对象。获取所有的book 标签对象
// 第四小,遍历每个book 标签对象。然后获取到book 标签对象内的每一个元素,再通过getText() 方法拿到
起始标签和结束标签之间的文本内容
// 第一步,通过创建SAXReader 对象。来读取xml 文件,获取Document 对象
SAXReader reader = new SAXReader();
Document document = reader.read("src/books.xml");
// 第二步,通过Document 对象。拿到XML 的根元素对象
Element root = document.getRootElement();
// 打印测试
// Element.asXML() 它将当前元素转换成为String 对象
// System.out.println( root.asXML() );
// 第三步,通过根元素对象。获取所有的book 标签对象
// Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
List<Element> books = root.elements("book");
// 第四小,遍历每个book 标签对象。然后获取到book 标签对象内的每一个元素,
for (Element book : books) {
// 测试
// System.out.println(book.asXML());
// 拿到book 下面的name 元素对象
Element nameElement = book.element("name");
// 拿到book 下面的price 元素对象
Element priceElement = book.element("price");
// 拿到book 下面的author 元素对象
Element authorElement = book.element("author");
// 再通过getText() 方法拿到起始标签和结束标签之间的文本内容
System.out.println("书名" + nameElement.getText() + " , 价格:"
+ priceElement.getText() + ", 作者:" + authorElement.getText());
}
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CharmDeer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值