XML技术

XML技术

一、XML 简介

什么是 xml?
xml 是可扩展的标记性语言。
xml 的作用?
xml 的主要作用有:
1、用来保存数据,而且这些数据具有自我描述性
2、还可以做为项目或者模块的配置文件
3、还可以做为网络传输数据的格式(现在 JSON 为主)。

二、xml 语法

1、文档声明

src/books.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- xml 声明 version 是版本 encoding 是编码 --> 
<books>
	<book id="SN123123413241"> 
		<name>java 编程思想</name> 
		<author>华仔</author> 
		<price>9.9</price> 
	</book> 
	<book id="SN12341235123"> 
		<name>葵花宝典</name> 
		<author>班长</author> 
		<price>5.5</price>
	</book> 
</books>

2、xml 注释

html 和 XML 注释 一样:<! – html 注释 – >

3、xml 元素(标签)

元素是指从开始标签到结束标签的内容
XML 元素必须遵循以下命名规则:
1)名称可以含字母、数字以及其他的字符
2)名称不能以数字或者标点符号开始
3)名称不能包含空格
xml 中的元素(标签)也 分成 单标签和双标签:
单标签格式: <标签名 属性=”值” 属性=”值” … />
双标签格式:< 标签名 属性=”值” 属性=”值” …> 文本数据或子标签 </标签名>

4、xml 属性

xml 的标签属性和 的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性: 一个标签上可以书写多个属性每个属性的值必须使用 引号 引起来。 xml和html标签的书写规则一致。
注:属性必须使用引号引起来,不引会报错示例代码

6、语法规则

1)所有 XML 元素都须有关闭标签(也就是闭合)
2)XML 标签对大小写敏感
3)XML 必须正确地嵌套
4)XML 文档必须有根元素
根元素就是顶级元素, 没有父标签的元素,叫顶级元素。
根元素是没有父标签的顶级元素,而且是唯一一个才行。
5)XML 的属性值须加引号
6)XML 中的特殊字符
< 特殊字符:& gt;
> 特殊字符:& lt;
7)文本区域(CDATA 区)
CDATA 语法可以告诉 xml 解析器,CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析
CDATA 格式: <![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]>

三、xml 解析技术介绍

xml 可扩展的标记语言。
不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析。
早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax。
第三方的解析:
jdom 在 dom 基础上进行了封装
dom4j 又对 jdom 进行了封装
pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件

四、dom4j 解析技术

1、Dom4j 类库的使用
2、dom4j 目录的介绍
3、dom4j 编程步骤
第一步: 先加载 xml 文件创建 Document 对象
第二步:通过 Document 对象拿到根元素对象
第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
第四步:找到你想要修改、删除的子元素,进行相应在的操作
第五步,保存到硬盘上
4、获取 document 对象
解析获取 Document 对象的代码

@Test 
public void getDocument() throws DocumentException { 
	// 要创建一个 Document 对象,需要我们先创建一个 SAXReader 对象 SAXReader 
	reader = new SAXReader(); 
	// 这个对象用于读取 xml 文件,然后返回一个 Document。 
	Document document = reader.read("src/books.xml"); 
	// 打印到控制台,看看是否创建成功 
	System.out.println(document); 
}

5、遍历标签 获取所有标签中的内容
需要分四步操作:
第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
第二步,通过 Document 对象。拿到 XML 的根元素对象
第三步,通过根元素对象。获取所有的 book 标签对象
第四步,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结 束标签之间的文本内容

@Test 
public void readXML() throws DocumentException { 
	// 第一步,通过创建 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()); 
	} 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值