XML代码的编写(⼀)
XML代码的编写(⼀)
XML概念
Extensible Markup Language,翻译过来为可扩展标记语⾔。Xml技术是w3c组织发布的,⽬前推荐遵循的是W3C组织于2000发布的XML1.0规范。
学习XML的⽬的
在现实⽣活中⼤量存在有关系的数据,如下图所⽰
这样的数据如何交给计算机处理呢?,XML语⾔出现的根本⽬标在于描述上图(图1)那种在现实⽣活中经常出现的有关系的数据。
在XML语⾔中,它允许⽤户⾃定义标签。⼀个标签⽤于描述⼀段数据;⼀个标签可分为开始标签和结束标签,在开始标签和结束标签之间,⼜可以使⽤其它标签描述其它数据,以此来实现数据关系的描述。例如:
<?xml version="1.0" encoding="UTF-8"?>
<;中国>
<;北京>
<;海淀></海淀>
<;丰台></丰台>
</北京>
<;湖南>
<;长沙></长沙>
<;岳阳></岳阳>
</湖南>
<;湖北>
<;武汉></武汉>
<;荆州></荆州>
</湖北>
</中国>
XML常见应⽤
XML技术除⽤于保存有关系的数据之外,它还经常⽤作软件配置⽂件,以描述程序模块之间的关系。
在⼀个软件系统中,为提⾼系统的灵活性,它所启动的模块通常由其配置⽂件决定,例如⼀个软件在
启动时,它需要启动A、B两个模块,⽽A、B这两个模块在启动时,⼜分别需要A1、A2和B1、B2模块的⽀持,为了准确描述这种关系,此时使⽤XML⽂件最为合适不过。
XML语法
学习XML语法的⽬的就是编写XML
⼀个XML⽂件分为如下⼏部分内容:
⽂档声明
元素
属性
注释
CDATA区 、特殊字符
处理指令(processing instruction)
xml语法——⽂档声明
在编写XML⽂档时,需要先使⽤⽂档声明,声明XML⽂档的类型。
①、最简单的语法:
<?xml version="1.0" ?>
②、⽤ encoding 属性说明⽂档的字符编码:
<?xml version="1.0" encoding="utf-8" ?>
常见的字符编码:gbk,gb2312,utf-8,基本上我们使⽤utf-8,全世界通⽤,不会出现乱码的现象。
③、⽤ standalone 属性说明⽂档是否独⽴:
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
standalone有两个属性,yes和no。如果是yes,则表⽰这个XML⽂档时独⽴的,不能引⽤外部的DTD规范⽂件;如果是no,则该XML⽂档不是独⽴的,表⽰可以⽤外部的DTD规范⽂档。
最简单的声明语法: <?xml version="1.0" ?>
例如:
<?xml version="1.0"?>
<softCompany>
<company>MicroSoft</company>
<company>google</company>
<company>Apple</company>
</softCompany>
浏览器解析结果如下:
⽤encoding属性说明⽂档的字符编码:<?xml version="1.0" encoding="GB2312" ?>
当XML⽂件中有中⽂时,必须使⽤encoding属性指明⽂档的字符编码,例如:encoding="GB2312"或者encoding="utf-8",并且在保存⽂件时,也要以相应的⽂件编码来保存,否则
在使⽤浏览器解析XML⽂件时,就会出现解析错误的情况。
例如:
xml标签大全<?xml version="1.0"?>
<softCompany>
<company>MicroSoft</company>
<company>google</company>
<company>Apple</company>
<company>百度</company>
</softCompany>
这个XML⽂件中没有使⽤encoding属性来指明⽂档的字符编码,但⽂档⾥⾯有“百度”这样的中⽂字符,在使⽤IE浏览器解析该XML⽂件时,IE就不知道该使⽤什么编码去解析该⽂件,就⽆法解析了,出现的错误如下图(图-1)所⽰:
图-1
要想正确解析该XML⽂档,就可以使⽤encoding属性指明该⽂档的字符编码。
例如:
<?xml version="1.0" encoding="GB2312"?>
<softCompany>
<company>MicroSoft</company>
<company>google</company>
<company>Apple</company>
<company>百度</company>
</softCompany>
此时再次使⽤IE浏览器来解析该XML⽂件,就可以正常解析出⾥⾯的中⽂字符了,如下图(图-2)所⽰:
图-2
编写XML⽂件常遇到的⼀个问题
XML⽂件⼀般使⽤国际化通⽤的编码“utf-8”,所以平时看到的XML⽂件的头部都会有这样的代码:
<?xml version="1.0" encoding="utf-8"?>
如果我们使⽤“记事本”或者“EditPlus”等⽂本编辑⼯具编写XML⽂件时,例如使⽤“EditPlus”编写如下的XML⽂件:
<?xml version="1.0" encoding="utf-8"?>
<CharacterEncoding>
<;中国>
<encoding>GB2312</encoding>
<encoding>GBK</encoding>
</中国>
<⽇本>
<encoding>JIS</encoding>
</⽇本>
</CharacterEncoding>
当我们在保存⽂件时,⽂件的编码默认是以“ANSI”来保存的,如下图(图-3)所⽰:
图-3
我们编写XML⽂件时,使⽤encoding="utf-8"来指明了⽂档的字符编码,但是在保存的时候却使⽤了“ANSI”编码来保存⽂件,由于我们在XML⽂件中使⽤encoding="utf-8"来指明了⽂档的字符编码,所以当浏览器解析该XML⽂件时,就是使⽤“utf-8”编码来解析,解析结果如下图(图-4)所⽰:
图-4
可以看到,浏览器解析失败了,这是为什么呢?我们明明指定了⽂档的字符编码是“UTF-8”了呀,为什么⾥⾯的中⽂解析不出来呢?这⾥不得不说说ANSI编码到底代表的是神马意思了。
不同的国家和地区制定了不同的标准,由此产⽣了 GB2312, BIG5, JIS 等各⾃的编码标准。这些使⽤ 2 个字节来代表⼀个字符的各种汉字延伸编码⽅式,称为 ANSI 编码。在简体中⽂系统下,ANSI 编码代表GB2312 编码,在⽇⽂操作系统下,ANSI 编码代表JIS 编码。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,⽆法将属于两种语⾔的⽂字,存储在同⼀段ANSI 编码的⽂本中。
下⾯分析⼀下为什么IE浏览器X⽆法解析ML⽂件的原因:如下图(图-5)所⽰:
图-5
所以千万要记住,使⽤“记事本”或者“EditPlus”等⽂本编辑⼯具编写XML⽂件时⼀定要以XML⽂件的encoding属性指明的编码来保存⽂件,这样才能保证浏览器解析XML⽂件时可以正常解析。
上述的问题将l⽂件再以“UTF-8”编码保存⼀次就可以正常解析出l
图-6
浏览器的解析结果如下图(图-7)所⽰:
图-7
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论