一、什么是XML
全称:Extensible Markup Language
中文名:可扩展标记语言
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标记语言进行定义的源语言。
XML主要用途是什么?
XML用于传输数据与存储数据。
二、XML和HTML的区别1)html标签不能自定义,从标签上不能达到“见词知意”的目的
<table></table>
<表格></表格>
2)html将数据与格式绑定在一起
xml只负责数据的传输与存储,其标签没有任何意义
3)不同浏览器解html不同
html语法要求不严格
等等
html主要用于数据的显示,xml主要用于数据传输
三、XML的应用场景1,充当程序间交互的中间件
2,小型数据库
四、XML的基本语法
1 文档声明
2 元素
3元素属性
4注释
5 特殊字符
6 CDATA区段
7 处理指令
第一部分:文档声明
文档声明必须在XML文档的第一行,按照严格的XML语法,声明语句前面不应该有空行。
最简单的声明语句,version属性表示XML版本,是必须的。
<?xml version="1.0" ?>
用encoding属性说明文档字符编码,不是必须的。当没有声明时,解析器默认以utf-8,或者utf-16对其解读。
<?xml version="1.0" encoding="GB2312" ?>
用standalone属性说明文档是否独立,属性值可以是yes或者no,不是必须的
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
关于encoding属性的设置:写包含中文内容的XML时,如若编码声明不当,会导致解析器无法正常解析。注意两点:(保证源文件编码与声明语句声明的编码要一致,encoding属性告诉解析器以特定的编码解析源文件)
编辑的源文件应该保存为utf-8,GBK,GB2312其中一个编码。
在XML声明中encoding属性值要和第一点中选择的编码相同。如果保存为utf-8,可以不用在XML声明中声明,解析器会自动解析。如果用GB2312,则在encoding属性的值一定要是GB2312。
一个XML元素有一个开始标记和一个对应的结束标记来定义,标记中间是内容
严格的XML语法规定必须有且只有一个根元素
元素标记名称规范:可以包含字母,数字以及其它字符
区分大小写,<p/>和<P/>是不同标记
不能以数字或者下划线“_”开头
不能以字符组合xml,或者Xml,xMl,xmL,XMl,xML,XML(即xml的大小写任何组合)等开头。
不能包含空格,<书 名></书 名>是错误的。
不能包含冒号“:”
推荐的元素标记命名建议:
命名尽量简短,减少XML大小
慎重使用非英文字符,某些应用程序可能不支持非英文字符。
不要使用点号“.”,点号在很多程序语言中表示引用等特殊含义。
不要使用减号“-”,以下划线“_”代替,避免与表达式中的减号运算符冲突。
第三部分:元素属性
一个标签可以有多个属性。
Xml代码 收藏代码
<售价 单位="元" >58</售价>
属性可以被改写成以子元素的形式来描述信息,效果相同。
<售价>
<单位>元</单位>
<价格>58</价格>
</售价>
属性值一定要用双引号或者单引号括起来。
属性命名规则与标签命名规则一样。
第四部分:注释
示例
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释 -->
<书架>
<书>
<书名>好书</书名>
<作者>某人</作者>
</书>
</书架>
注释不能出现在XML声明之前。
一对注释符号之间不能包含另外一对注释符号,一下为错误的示例
<!-- 注释
.......
.......
<!-- 局部注释 -->
.......
-->
注释中出现中文无法解析问题: 解析器虽然会忽略注释内容,但是解析器对内容执行了读取动作,如若编码不当,就会出现无法解析问题。由于解析器读取注释内容与读取标签等其它内容后的处
第五部分:特殊字符的转义
特殊字符 转义符号
& &
< <
> >
" "
' '
注意:如果需要表示像&这样一个字符,需要转义成&amp
'' 和 ' 符号的转义一般用于属性值中,& 和 < 和 > 一般用于开始标签与结束标签之间的字符数据中。
字符数据可以是不包括任何标记的起始界定符和CDTA段定界符的任意字符串(即和号“&”和小于号“<”和 符号“]]>”),如:正确:<data>/</data>;错误:<data>&</data>;错误:<data>]]></data>
正确:<data>&</data>
第六部分:CDATA区
示例
<script>
<![CDATA[
for(var i = 0; i < 10; i ++) {
}
]]>
</script>
CDATA区(charater data的缩写)内的内容XML解析器不会对其进行解析,它会原封不动地交给下游程序处理。
CDATA区内不能出现字符串“]]>”例如以下错误示例
<javaCode>
<![CDATA[
if(array[num[i]]>10) {
}
]]>
</javaCode>
解决方法1.在“]]”与“>”之间插入一个空格;解决方法2:将字符串“]]>”分开放到两个CDATA区中
第七部分:处理指令(processing instruction,简称PI)
PI以“<?”开头,以“?>”结尾。
XML分析器吧处理指令原封不动传给应用程序,由应用程序来解析这个指令,遵照PI提供的信息要求进行处理。例如,在XML文档中,可以包含以下PI告诉浏览器使用book.css控制其显示效果
<?xml-stylesheet type="text/css" href="book.css"?>
示例:本示例通过在demo_PI.xml中设置PI语句引用dog.css控制demo_PI.xml文件在浏览器端的显示效果。
Demo_pi.xml代码 收藏代码
<?xml version="1.0" ?>
<?xml-stylesheet type="text/css" href="dog.css" ?>
<dog>
<name>BigYellow</name>
<owner>大傻</owner>
<breed>sinoGun</breed>
</dog>
注意:xml-stylesheet处理指令总是放在XML声明之后,第一个元素之前。其它指令可以放在除标记内部和XML声明之前的任何位置。“<?”与“xml-stylesheet”之间不能有空格。