1.XML 简介
1.1xml简介
什么是xml
xml 是可扩展的标记性语言。
xml 的作用?
xml 的主要作用有:
- 用来保存数据,而且这些数据具有自我描述性
- 它还可以做为项目或者模块的配置文件
- 还可以做为网络传输数据的格式(现在 JSON 为主)。
1.2 xml语法
-
文档声明。
-
元素(标签)
-
xml 属性
-
xml 注释
-
文本区域(CDATA 区)
1.2.1xml举例
1)创建一个 xml 文件
<?xml version="1.0" encoding="UTF-8"?> xml 声明。
<!-- xml 声明 version 是版本的意思 encoding 是编码 -->
而且这个<?xml 要连在一起写,否则会有报错
属性
version 是版本号
encoding 是 xml 的文件编码
standalone="yes/no" 表示这个 xml 文件是否是独立的 xml 文件
2)举例
<?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>
1.2.2xml语法规则
1)注释
html 和 XML 注释 一样 :
2)元素(标签)
元素是指从开始标签到结束标签的内容。
注意点:
-
所有 XML 元素都须有关闭标签(也就是闭合)
-
XML 标签对大小写敏感
-
XML 必须正确地嵌套
-
XML 文档必须有唯一一个根元素
-
XML 的属性值须加引号
-
XML中的特殊字符
-
文本区域(CDATA 区)
例如:
<book id="SN123123413241"> <!-- book是标签名称 id为属性,提供book的额外信息 -->
<name>java 编程思想</name>
<author>华仔</author>
<price>9.9</price>
</book>
其中的title,是标签名称,有以下几点要注意:
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能包含空格
- xml 中的元素(标签)也 分成 单标签和双标签:
单标签:格式: <标签名 属性=”值” 属性=”值” … />
双标签:格式:< 标签名 属性=”值” 属性=”值” …>文本数据或子标签</标签名>
属性注意点:
属性必须使用引号引起来,不引会报错示例代码
2.XML解析
早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)
第三方的解析:
jdom 在 dom 基础上进行了封装 、
dom4j 又对 jdom 进行了封装。
pull 主要用在 Android 手机开发,是在跟
dom4j使用:
需要分四步操作:
第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
第二步,通过 Document 对象。拿到 XML 的根元素对象
第三步,通过根元素对象。获取所有的 book 标签对象
第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结 束标签之间的文本内容
//读取 xml 文件中的内容
@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());
}
}