谢谢楼主!
概述
xml:eXtensible Markup Language,可拓展标记语言。作用主要是做配置文件和数据传输载体。本文只说明它做配置文件的知识。下面介绍它的文档结构、元素&属性、注释&CDATA、解析、DTD约束、Schema约束。
文档结构
1.文档声明
任何一个xml文件都是的第一行都必须是文档声明。简单文档声明如下:<?xml version="1.0" ?>。文档声明中可以存在属性,需要了解两个属性:encoding,值是:解码规则,如utf-8 和 standalone,值是:yes或者no。前者表明文档的解码规则,后者表明文档是否是独立的xml文档。由于一般都是独立的xml文档,所以这个属性不常用。
2.encoding
字符从输入到保存再到下次打开,会存在两次操作,一次是在保存的时候采用何种编码规则进行保存,一次是在打开的时候采用何种编码规则来打开,前者是编码规则,后缀是解码规则。解码规则和编码规则一直时才能把上次保存的字符展示出来,否则便是乱码。对于下面的一个简单xml文档。选择另存为的时候会发现有格式有很多的选择,其中默认的是本机的编码格式,对于国内来说也就是GBK编码。
对于下面的这段文档,使用"utf-8"和"GBK"都能正常保存,但是使用"iso-8859-1"就不行了,因为中文字符不能被存为"iso-8859-1"。
<?xml version="1.0" encoding="utf-8"?>
<stus>
<stu>
<name>张三</name>
<age>18</age>
</stu>
<stu>
<name>李四</name>
<age>28</age>
</stu>
</stus>
在每个xml文件中,都有一个根元素,如上面的是stus。而且所有的xml文档都是树形结构。上面的代码中stu 是stus 的孩子,name 和 age 又是stu 的孩子。可以总结为下图:
元素&属性
我们刚才写的代码中,stus、stu、name、age都是元素;在文档声明中encoding 是属性;“UTF-8”是属性值,张三、李四 等是文本。
自定义元素规则:
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
属性规则
- 属性的名称没有要求
- 属性的值需要用引号引起来
解析xml的方式
xml的解析方式有很多种,但是常用的有两种。DOM和SAX。
DOM:document object model
DOM解析方式是把整个xml文档都加载到内存中,解析成树状结构。此文档被叫做document。之前说过的元素被叫做element,属性被叫做attribute,文本被叫做text,他们有一个共同的父亲Node。
SAX:simple API for XML
基于事件驱动,即不再是全部加载进内存,而是逐行扫描文档,一边扫描一边解析,可以在解析文档的任意时刻停止解析。
区别
DOM不仅可以检索数据,还可以增加和删除,而SAX只能进行检索。而且SAX速度更快,效率更高。