一、XML概述
- XML英文全称为Extensible Markup Language,即可扩展标记语言。XML技术由W3C组织发布,目前还遵循XML1.0规范。
- XML是一种数据存储格式。现实生活中存在着大量的数据,这些数据之间往往是有一定的关系的,如“中国/山东/青岛”,这就是一个覆盖范围的层级关系。我们希望在计算机中保存和处理这些数据的同时能够保存和处理他们之间的关系,XML及时为了解决这样的需求而产生的数据存储格式。
- 我们都知道html是一种标记语言,它的所有标签都是事先定义好的,直接用即可。XML之所以被称为可扩展标记语言,是因为在XML语言中允许用户自定义标签,每一个标签用于描述一段数据。
二、 XML的常见应用场景
- 传输数据。由于XML本质上是一段字符串,具有跨平台的特性(目前的主流技术都支持XML),所以常被用来在不同系统之间进行数据交换,是一种跨平台的数据。例如:服务器向安卓客户端发送数据,就会涉及到两个不同系统之间的数据切花,前者可能是C#+windows的开发环境,后者则是Java+Android的开发环境。
- 充当配置文件。XML可以在保存数据的同时保存数据之间的关系,利用这一特点,它经常用作应用程序的配置文件来使用。例如:在使用Eclipse进行开发时,可以导入一些XML模板来直接使用,如JavaEE中编写Servlet模板
三、编写XML文件
- 将遵照XML数据存储格式写出的XML数据保存到一个文件中去,并将文件的后缀名设定为.xml,那么这样的保存了XML数据的文件就叫做xml文件。xml文件是保存XML数据的一种方式,但XML数据也可以以其他方式存在,不能将XML语言狭隘的理解成xml文件。
- 检验所编写的xml文件是否符合规范。浏览器除了内置html解析器外还内置了xml解析器,所以可以使用浏览器对xml文件进行校验:将xml文件用浏览器打开,能够正确打开并显示其中数据,即说明所编写的xml文件的格式正确;否则,会有报错!。
四、XML语法(6部分)
- xml文档声明。用来声明xml的基本属性,用来指挥解析引擎如何去解析xml,注意一个xml必须包含且只能包含一个xml文档声明,且必须在整个xml文件的最前面。尽管xml文件可以不写xml文档声明,但那是格式不好的xml,有极大的潜在风险,所以强烈推荐写!
<?xml version = "1.0" encoding = "utf-8" standalone = "yes" ?>
version属性表明当前xml所遵循规范的版本,目前写1.0即可;
encoding用来指挥解析引擎在解析xml时所采用的编码。乱码问题大多数情况下是由于encoding和decoding时所采用的码表不一致,通过encoding属性保证xml格式的数据在保存时使用的编码和解析时使用的编码一致,即如果xml文件在存储时使用utf-8格式存储,则文档声明中的encoding属性值也应写成utf-8;
standalone属性用来指明当前的xml是否是一个独立的xml,默认值是yes表明当前文档不需要依赖于其他文档,如果当前文档依赖其他文档而存在需要将此值设置为no。
元素
一个xml标签就是一个元素。
标签分为开始标签和结束标签,开始标签和结束标签之间可以包含文本内容,这样的文本内容叫做标签体;标签中也可以嵌套若干合理子标签。
如果开始标签和结束标签之间不包含标签和子标签则可以将开始标签和结束标签合并,这样的标签称为自闭标签。如<a></a>可以简写为<a/>
一个格式良好的xml要包含并且只能包含一个根标签,其他标签都是这个根标签的子孙标签。
对于xml标签中出现的所有空格和换行,xml解析程序都会当做标签内容进行处理
XML标签命名规范
1、区分大小写
2、不能以数字或标点符号或“_”开头
3、不能以xml(或XML,Xml等)开头
4、不能包含空格
5、名称中间不能包含空格属性
一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:
<china captial = "beijing"/>
。属性的名在定义时要遵循和xml相同的命名规则,属性的值需要用单引号或双引号括起来。
- 注释。
与html注释相同,
<!--这里写注释内容-->
,只是其位置不能出现在文档声明之前,其余可以在任意位置。
CDATA区或转义字符
使用格式:<![CDATA[这儿写要转义的内容]]>
。当解析器遇到CDATA区时会将其内容当作文本对待,不会进行解析
常用转义字符:
处理指令(基本不用)
处理指令,简称PI(processing instruction)。处理指令用来指挥解析引擎如何解析xml文档内容。
使用格式:<?xml-stylesheet type = "text/css" href = "1.css"?>
其含义是用”1.css”文件来渲染这个xml文件的数据