XML学习总结(⼆)——XML⼊门
⼀、XML语法学习
  学习XML语法的⽬的就是编写XML
  ⼀个XML⽂件分为如下⼏部分内容:
⽂档声明
元素
属性
注释
CDATA区、特殊字符
处理指令(processing instruction)
1.1、xml语法——⽂档声明
  在编写XML⽂档时,需要先使⽤⽂档声明,声明XML⽂档的类型。
  最简单的声明语法:<?xml version="1.0" ?>
  例如:
1<?xml version="1.0"?>
2<softCompany>
3<company>MicroSoft</company>
4<company>google</company>
5<company>Apple</company>
6</softCompany>
  浏览器解析结果如下:
  ⽤encoding属性说明⽂档的字符编码:<?xml version="1.0" encoding="GB2312" ?>
  当XML⽂件中有中⽂时,必须使⽤encoding属性指明⽂档的字符编码,例如:encoding="GB2312"或者encoding="utf-8",并且在保存⽂件时,也要以相应的⽂件编码来保存,否则在使⽤浏览器解析XML⽂件时,就会出现解析错误的情况。
  例如:
1<?xml version="1.0"?>
2<softCompany>
3<company>MicroSoft</company>
4<company>google</company>
5<company>Apple</company>
6<company>百度</company>
7</softCompany>
  这个XML⽂件中没有使⽤encoding属性来指明⽂档的字符编码,但⽂档⾥⾯有“百度”这样的中⽂字符,
在使⽤IE浏览器解析该XML⽂件时,IE就不知道该使⽤什么编码去解析该⽂件,就⽆法解析了,出现的错误如下图(图-1)所⽰:
                    图-1
  要想正确解析该XML⽂档,就可以使⽤encoding属性指明该⽂档的字符编码。
  例如:
1<?xml version="1.0" encoding="GB2312"?>
2<softCompany>
3<company>MicroSoft</company>
4<company>google</company>
5<company>Apple</company>
6<company>百度</company>
7</softCompany>
  此时再次使⽤IE浏览器来解析该XML⽂件,就可以正常解析出⾥⾯的中⽂字符了,如下图(图-2)所⽰:
                图-2
1.2、编写XML⽂件常遇到的⼀个问题
  XML⽂件⼀般使⽤国际化通⽤的编码“utf-8”,所以平时看到的XML⽂件的头部都会有这样的代码:
1<?xml version="1.0" encoding="utf-8"?>
  如果我们使⽤“记事本”或者“EditPlus”等⽂本编辑⼯具编写XML⽂件时,例如使⽤“EditPlus”编写如下的XML⽂件:
1<?xml version="1.0" encoding="utf-8"?>
2<CharacterEncoding>
3<;中国>
4<encoding>GB2312</encoding>
5<encoding>GBK</encoding>
6</中国>
7<⽇本>
8<encoding>JIS</encoding>
9</⽇本>
10</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
  在使⽤⼀些⽐较智能的IDE编写XML⽂件时,IDE在保存XML⽂件时,会⾃动以encoding属性指明的编码来保存⽂件,例如
在MyEclipse中编写XML⽂件时,就可以根据encoding属性指明的字符编码,指明为encoding="GB2312"时,保存XML⽂件时就⾃动将⽂件保存成GB2312编码 (如图-8),指明为encoding="UTF-8"时,就⾃动保存为UTF-8 (如图-9)。
                                  图-8
                                  图-9
  ⽤standalone属性说明⽂档是否独⽴:
1<?xml version="1.0" encoding="GB2312"  standalone="yes" ?>
1.3、xml语法——元素
  XML元素指XML⽂件中出现的标签,⼀个标签分为开始标签和结束标签,⼀个标签有如下⼏种书写形式,例如:
包含标签体:<a>wwwblogs/</a>
不含标签体的:<a></a>, 简写为:<a/>
  ⼀个标签中也可以嵌套若⼲⼦标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套,例如:
    错误的写法:<a>welcome to <b>wwwblogs/</a></b>
  格式良好的XML⽂档必须有且仅有⼀个根标签,其它标签都是这个根标签的⼦孙标签。
  对于XML标签中出现的所有空格和换⾏,XML解析程序都会当作标签内容进⾏处理。例如:下⾯两段内容的意义是不⼀样的。
  第⼀段:
1<⽹址>wwwblogs/</⽹址>
  第⼆段:
1<⽹址>
2      wwwblogs/
3</⽹址>
  由于在XML中,空格和换⾏都作为原始内容被处理,所以,在编写XML⽂件时,使⽤换⾏和缩进等⽅式来让原⽂件中的内容清晰可读的“良好”书写习惯可能要被迫改变。
  ⼀个XML元素可以包含字母、数字以及其它⼀些可见字符,但必须遵守下⾯的⼀些规范:
1. 区分⼤⼩写,例如,<P>和<p>是两个不同的标记。
2. 不能以数字或"_" (下划线)开头。
3. 不能以xml(或XML、或Xml 等)开头。
4. 不能包含空格。
5. 名称中间不能包含冒号(:)
1.4、XML语法——属性
  ⼀个标签可以有多个属性,每个属性都有它⾃⼰的名称和取值,例如:<input name=“text”>,属性值⼀定要⽤双引号(")或单引号(')引起来,定义属性必须遵循与标签相同的命名规范。
  多学⼀招:在XML技术中,标签属性所代表的信息,也可以被改成⽤⼦元素的形式来描述,例如:
1<input>
2<name>text</name>
3</input>
1.5、XML语法——注释
  Xml⽂件中的注释采⽤:<!--注释-->格式。
  注意:
XML声明之前不能有注释
注释不能嵌套,例如:
<!--⼤段注释
……
<!--局部注释-->
……
-->
1.6、XML语法——CDATA区
  在编写XML⽂件时,有些内容可能不想让解析引擎解析执⾏,⽽是当作原始内容处理,遇到此种情况,可以把这些内容放在CDATA区⾥,对于CDATA区域内的内容,XML解析程序不会处理,⽽是直接原封不动的输出。
  语法:<![CDATA[ 内容 ]]>
  例如:
1<?xml version="1.0" encoding="utf-8"?>
2<soft>
3<![CDATA[
4    <a className="gacl.xdp">
5        <a1>gacl</a1>
6        <a2>xdp</a2>
7    </a>
8]]>
9<b>
10<b1>孤傲苍狼</b1>
11<b2>徐达沛</b2>
12</b>
13</soft>
  该XML⽂件使⽤IE浏览器解析引擎解析执⾏后,结果如下图(图-10)所⽰:
                        图-10
  对于⼀些单个字符,若想显⽰其原始样式,也可以使⽤转义的形式予以处理。
              转义字符表
  例如:
1<?xml version="1.0" encoding="utf-8"?>
2<soft>
3<b>
4<b1>;孤傲苍狼</b1>
5<b2>徐达沛</b2>
6</b>
7</soft>
  解析器解析的结果如下图(图-11)所⽰:
          图-11
1.7、XML语法-处理指令
  处理指令,简称PI (processing instruction)。处理指令⽤来指挥解析引擎如何解析XML⽂档内容。例如,在XML⽂档中可以使⽤xml-stylesheet指令,通知XML解析引擎,应⽤css⽂件显⽰xml⽂档内容,标签名为中⽂时,css不起作⽤。
  <?xml-stylesheet type="text/css" href="css⽂件名.css"?>
  例如:
1<?xml version="1.0" encoding="utf-8"?>
2<!--在XML⽂档中可以使⽤xml-stylesheet指令,通知XML解析引擎,应⽤country.css⽂件显⽰xml⽂档内容-->
3<?xml-stylesheet type="text/css" href="country.css"?>
4<Country>
5<c1>中国</c1>
6<c2>美国</c2>
7<c3>⽇本</c3>
8<c4>韩国</c4>
9</Country>
  Country.css样式⽂件代码如下:
1c1{
2    font-size:200px;
3    color:red;
4 }
5c2{
6    font-size:150px;
7    color:green;
8 }
9c3{
10    font-size:100px;
11    color:#ccc;
12 }
13c4{
14    font-size:130px;
15    color:blue;
16 }
  在浏览器中解析该XML⽂件的结果如下图(图-12)所⽰:
索尼xml文件可以删除吗                          图-12
  处理指令必须以"<?"作为开头,以"?>"作为结尾,XML声明语句(<?xml version="1.0" encoding="utf-8"?>)就是最常见的⼀种处理指令。  到此,关于XML语法⽅⾯的讲解就全部讲完了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。