XML
# XML
# 1.XML简介
W3School参考 (opens new window)菜鸟教程 (opens new window)
W3C组织 (opens new window)是对网络标准制定的一个非赢利组织 (opens new window),像HTML、XHTML、CSS、XML的标准就是由W3C来定制。W3C会员(大约500名会员)包括生产技术产品及服务商、内容供应商、团体用户、研究实验室、标准制定机构和政府部门,一起协同工作,致力在万维网 (opens new window)发展方向上达成共识。 自从Web诞生以来,Web的每一步发展、技术成熟和应用领域的拓展,都离不开成立于1994年10月的W3C(World Wide Web Consortium,万维网联盟 (opens new window))的努力。W3C是专门致力于创建Web相关技术标准并促进Web向更深、更广发展的国际组织。
概念:eXtensible Markup Language可扩展标记语言。XML 被设计用来结构化、存储以及传输信息。
- 可扩展:标签都是自定义的
什么是 XML?
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是==传输数据==,而非显示数据
- XML 标签没有被预定义。需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
功能:
存储数据
- 配置文件
- 在网络中传输
# 2.xml与html的区别
XML 被设计用来传输和存储数据
HTML 被设计用来显示数据
xml标签都是自定义的,html标签是预定义
xml的语法严格,html语法松散
xml存储数据的,html是展示数据
XML 是对 HTML 的补充
XML 不会替代 HTML,理解这一点很重要。在大多数 Web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。
对 XML 最好的描述是:
XML 是独立于软件和硬件的信息传输工具
# 3.语法
基本语法:
- xml文档的后缀名
.xml
- xml第一行必须定义为文档声明
- xml文档中有且仅有一个根标签
- 属性值必须使用引号(单双都可)引起来
- 标签必须正确关闭
- xml标签名称区分大小写
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<users>
<user id='1'>
<name>zhangsan</name>
<age>23</age>
<gerder>male</gerder>
</user>
<user id='2'>
<name>zhangsan</name>
<age>23</age>
<gerder>female</gerder>
<code>
<!-- if(a< b && a>c) -->
if(a < b && a > c) { }
<![CDATA[
if(a < b && a > c) { }
]]]>
</code>
</user>
</users>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 4.组成部分
I. 文档声明
1.格式:<?xml属性列表?>
2.属性列表:
- version:版本号,必须的属性
- encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
- standalone:是否独立了
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
standalone取值:
yes:不依赖其他文件
no:依赖其他文件
II. 指令
- 结合CSS样式
<?xml-stylesheet type="text/css" href="a.css"?>
III. 标签
标签命名规则:
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母xml(或者XML、Xml等)开始
- 名称不能包含空格
IV. 属性
- ID属性值唯一
V. 文本
- CDATA区:在该区域中的数据会被原样展示
- 格式:
<![ CDATA[数据 ] ] >
# 5.实体引用
在 XML 中,一些字符拥有特殊的意义。
如果把字符"<"
放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始
这样会产生 XML 错误:
<message>if salary < 1000 then</message>
为了避免这个错误,请用==实体引用==来代替 "<" 字符:
<message>if salary < 1000 then</message>
在 XML 中,有 5 个预定义的实体引用:
< | < | 小于 |
---|---|---|
> | > | 大于 |
& | & | 和号 |
' | ' | 单引号 |
" | " | 引号 |
**注释:**在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。
# 6.XML约束
约束:规定xml文档的书写规则
XML约束分类:
DTD:一种简单的约束技术
Schema:一种复杂的约束技术
DTD:引人dtd文档到xml文档中
内部dtd:捋约束规则定义在xml文档中
外部dtd:将约束的规则定义在外部的dtd文件中
本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件位置">
网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名称" "dtd文件位置URL">
Schema
引人xml文件:
- 填写xml文档的根元素
- 引入xsi 前缀.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 引入xsd文件命名空间
xsi:schemalocation="https://github.com/IQQcode student.xsd"
- 为每一个xsd约束声明一个前缀,作为标识
xmlns="https://github.com/IQQcode"
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://github.com/IQQcode"
xsi:schemaLocation="https://github.com/IQQcode student.xsd">
<student number="IQQCode_0001">
<name>Mr.Q</name>
<age>120</age>
<sex>male</sex>
</student>
<student number="IQQCode_0002">
<name>IQQcode</name>
<age>120</age>
<sex>female</sex>
</student>
</students>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
2
3
4
5
6
# 7.XML解析
解析:操作xml文档,将文档中的数据读取到内存中
操作xml文档
解析(读取):将文档中的数据读取到内存中
写入:将内存中的数据保存到xml文档中,持久化的存储
解析xml的方式
- DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
优点:操作方便,可以对文档进行CRUD的所有操作
缺点:占内存
- SAX:逐行读取,基于事件驱动的。
优点:不占内存。
缺点:只能读取,不能增删测
XML 树结构
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
实例中的根元素是
# xml常见的解析器
JAXP:sun公司提供的解析器,支持DON和SAX两种思想
DoM4J:一款非常优秀的解析器
Jsoup:是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jouery的操作方法来取出和操作数据。
PULL:Android操作系统内置的解析器,SAX方式
【Jsoup解析xml】