XML(eXtensibleMarkupLanguage)定义:可扩展标记语言
XML文档的而构成:
- 处理指令(可以认为一个文件内只有一个处理指令)
最多只有一行,且必须在第一行
内容是与xml本身处理起相关的一些声明或者指令
以xml关键字开头,一般用于声明XML的版本和采用的编码
version属性是必须的
encoding属性用来指出xml解释器使用的编码
- 根元素(一个文件内只有一个根元素)
在整个xml文件中,可以把他看作一个树形结构
根元素有且只能由一个
- 子元素
- 属性
- 内容
- 注释
注释不能嵌套在标签里
只有在注释的开始和结尾使用双短横线
三短横线只能出现在注释的开头而不能用在结尾
<name> <!-- wangdapeng --> </name> #可以 <name <!-- wangdapeng -->> </name> #不可以,注释在标签内 <!--my-name-by-wang--> #可以,注释内容可以有一个短横线 <!--my--name--by--wang-->#不可以,双短横线只能出现在开头或结尾 <!---my-name--> #可以, 三短横线只能出现在开头 <!---my-name---> #不可以, 三短横线只能出现在开头
XML中保留字符的处理方法:
XML中使用的符号可能跟实际符号相冲突,典型的就是左右尖括号
1.使用实体引用(EntityReference)来表示保留字符
<score> score>80 </score> #有错误,xml中不能出现> <score> score>80</score> #使用实体引用
2.把含有保留字符的部分放在CDATA块内部,CDATA块把内部信息视为不需要转义
<![CDATA[ select name,age from Student where score>80 ]]>
3.常用的需要转移的保留字符和对应实体引用
- &:&
- <:<
- >:>
- ':'
- ":"
- 共五个,每个实体引用都以&开头并且以;结尾
为了避免命名冲突,需要给可能冲突的元素添加命名空间:
#两个元素中都有一个name属性 <Student> <Name>LiuYing</Name> <Age>23</Age> </Student> <Room> <Name>2014</Name> <Location>1-23-1</Location> </Room>
如果归并上述两个元素,就有有两个name,会产生冲突,这时需要用到命名空间xmlns: xml name space的缩写:
<Schooler xmlns:student="http://my_student" xmlns:room="http://my_room"> <student:Name>LiuYing</student:Name> <Age>23</Age> <romm:Name>2014</room:Name> <Location>1-23-1</Location> </Schooler>