XML要点总结
XML可扩展标记语言
1.概述
1.概念
XML(Extensible Markup Language可拓展标记语言)
2.功能
存储数据,一般用于做配置文件,或者在网络中传输(通常用json文件)
3.XML和HTML区别
- xml标签是自定义的,所以需要有约束文件。
- xml的语法严格,html语法松散
- xml主要用于存储数据,html展示数据
4.语法
- 文档后缀名xml
- 第一行
<?xml version='1.0' encoding='utf8'?>
是文档声明 - xml中有且仅有一个根标签
- 属性值要用(单双)引号引起来
- 区分大小写
5.快速入门
1 |
|
6.主要部分
1.文档声明
1.格式
1 |
2.属性列表
- version:版本号,一般用1.0
- encoding:编码方式。
- standalone:是否独立,yes 或者 no用于表示是否依赖其他文件
2.属性
id值是唯一的
2.约束:规定XML文档的书写诡诈
1.要求
- 能够在xml中引入约束文档
- 能够简单读懂约束文档
2.分类
1.DTD:Document Type Define,简单的文档类型约束技术
1.将约束规则引入xml文件中两种方式
- 本地:
<!DOCTYPE 根标签名 SYSTEM "文件位置">
- 网络:
<!DOCTYPE 根标签名 PUBLIC"文件位置">
2.快速入门
1 |
|
2.Schema:略微复杂的xml文档约束技术
1 |
|
3.解析
1.方式
DOM
将标记语言一次性加载进内存形成DOM树。因为比较占内存,所以一般用于PC端
SAX
逐行读取,是基于事件驱动的,一般用于手机端,因为内存小。
2.XML解析器JSOUP
1.快速入门
1.步骤
- 导入jsoup的jar包
- 获取document对象
- 获取标签Element对象
- 获取数据
2.代码
1 | String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath(); |
2.主要对象使用
1.Document
Jsoup静态方法parsexml文件获取
2.Element
通过getElementByxx获取,下面也会介绍快捷的方式select获取xpath获取
3.获取属性值
String attr(String key)
4.获取文本
- string text()
- string html()
3.快捷查询1selector
- select(String cssQuery),就是css中定位元素的方法
- 参考文档中的Selector类中的方法
4.快捷查询2xpath
需要导入xpath对应的jar包
new JXDocument对象,参数为jsoup获取的document对象
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37//1.获取student.xml的path
String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
//2.获取Document对象
Document document = Jsoup.parse(new File(path), "utf-8");
//3.根据document对象,创建JXDocument对象
JXDocument jxDocument = new JXDocument(document);
//4.结合xpath语法查询
//4.1查询所有student标签
List<JXNode> jxNodes = jxDocument.selN("//student");
for (JXNode jxNode : jxNodes) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//4.2查询所有student标签下的name标签
List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
for (JXNode jxNode : jxNodes2) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//4.3查询student标签下带有id属性的name标签
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
for (JXNode jxNode : jxNodes3) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//4.4查询student标签下带有id属性的name标签 并且id属性值为itcast
List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");
for (JXNode jxNode : jxNodes4) {
System.out.println(jxNode);
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 坚韧的长线「串联」散落的珍珠!
评论