XML: eXtensible Markup Language (可扩展的标记语言)
XML是一个比较重要的内容,不管是对网络数据传输,还是Web开发,都是非常重要的,它是数据交换的需要,电子商务的基础,在局域网聊天的项目中,我们之前是使用字符流进行传输,这种情况不是不可以,而是不符合规范,在实际中是要用xml来进行数据的传输。这部分内容会在以后的课程中讲到。
1. XML知识体系
1) XML语法规则
2) XML核心技术
(1) 文档描述、验证、约束技术 -- DTD/Schema
Document Type Definition (DTD,文档类型定义)
(2)文档转换技术 -- XSL
(3)数据查询技术 -- XPath
(4)链接技术 -- XLink/XPointer
(5) 编程接口 -- DOM/SAX [重点]
如何使用Java语言来处理XML,比如说给定一个XML,可以把想要的东西解析出来,另外一个方面如何利用程序从数据库或其他载体中得到数据利用XML保存到硬盘上,或利用网络传输给其他人。这需要编程接口,几乎所有的程序语言都提供了对XML的编程接口。
2. 主要内容:
1) XML的基本格式
2) XML描述、验证、约束技术
3) XML数据转换
4) DOM
5) XML应用
3. Document Type Definition (DTD,文档类型定义)
DTD是伴随着XML的,XML经常是与DTD相伴相生的,它们之间的关系是,DTD是用来验证XML的,就是给你一份XML文档,他是否是有效的,就必须去验证他。它相当于XML的语法一样。
4.XML描述的是结构和语义,而不是格式化
1) XML标记描述的是文档的结构和意义。
2) 它不描述页面元素的格式化。可用样式单为文档增加格式化信息。文档本身只说明文档包括什么标记,而不是说明文档看起来是什么样的。
初看HTML与XML很像,其实之前差别太多了,HTML是包括了格式化的标记,而且HTML中的标记都是已经定义好的了,是HTML语法的定义。而XML没有,这是他们最大的不同了。HTML中的很多标签都是有开始,而没有结束的,而XML中是绝对不允许的。
3)什么是标记语言
当我们需要通过标记将有用的信息告知一组用户时:
(1) 我们必须有一个标准,用它来描述什么是有效的标记
HTML中,标记就是所谓的"标签"(tag).
(2) 我们还要有一个标准描述每个标记的具体含义。
5. 现在我们来写一个XML文档:first.xml
<?xml version="1.0"?> <students> <student> <id>100</id> <name>lisi</name> <address>beijing</address> </student> </students>
编辑如上所示内容,让后用浏览器打开first.xml,如果编辑正确,则浏览器会自动将XML结构解析出来。如下图1所示:
需要注意的一些内容:
1) XML 中的每个元素都是成对出现的(有开始,有结束),如<student> </student>
2)XML中的元素嵌套关系要保持正确性,即先开始的标记要先结束,后开始的标记要后结束。
3) 每一个 XML 文档都有且只有一个根元素(Root Element)。所谓根元素,就是唯一一个包含了其他所有元素的元素。如上例中的 <student> </student>
如下例2所示,是不合法的
<?xml version="1.0"?> <students> <student> <id>100</id> <name>lisi</name> <address>beijing</address> </student> </students> <teacher> </teacher>
如下例3所示,则是合法的<?xml version="1.0"?> <students> <student> <id>100</id> <name>lisi</name> <address>beijing</address> </student> <student> <id>100</id> <name>lisi</name> <address>beijing</address> </student> </students>
3. XML 中的每个元素都是成对出现的有开始,有结束),<student> </student>, XML 中的元素嵌套关系要保持正确性,即先开始的标记要先结束,后开始的 标记要后结束。
4. 每一个 XML 文档都有且只有一个根元素(Root Element)。所谓根元素,就是唯一一个包含了其他所有元素的元素。
5. XML 描述的是文档的内容与语义,而不是文档应当如何显示。
6. XML的制定目标
7. HTML缺陷
8. XML的优越性
讲到这边我们回顾之前的聊天器的项目中比如客户端的数据传输,我们之前是用字符串的形式如:zhangsan@@192.168.0.100_9000,这个形式来传输。现在如果用XML的形式就会更加方便,如下所示:
<client>
<username>zhangsan</username>
<clientHost>192.168.0.100</clientHost>
<clientPort>9000</clientPort>
</client>
这样传输过程中,再利用其特有的XML解析机制,就可以很方便的进行数据的转换了。
9. 注意XML是一种树形结构面向对象编程,就比如上面例3的XML例子,将其倒过来就可以发现其为树形结构,如下图所示