XML基础

原创 2006年05月29日 10:39:00

XML作为一种通用的数据交换格式,应用越来越广泛。目前许多系统的配置文件都使用XML格式,本书中所涉及到的众多配置文件都是XML格式的,新的JSP规范也推出了采用XML语法的JSP文档,因此,要深入学习和掌握Java Web开发技术,必须有一些基本的XML语言知识。由于XML的通用性和广泛应用,在读者以后实际项目开发和应用中,很多地方都要用到XML方面的知识,所以,对XML知识的了解和掌握,已经是从事电子商务网站和相关系统开发的编程人员所必须掌握的基本知识。

F指点迷津:什么是配置文件

配置文件就是记录应用程序的配置信息的文件。例如,某个程序要连接网络上的数据库系统时,需要指定数据库服务器的ip地址、服务器的网络监听端口号、数据库的名称、用户名和密码等信息,这些信息可以作为应用程序的配置信息来对待,即不要将这些信息写死在源程序中,而是写在一个文本文件中。应用程序要连接数据库系统时,从该文本文件中读取所需要的信息,如果连接的数据库系统的信息发生了改变,则只需要修改该文本文件,而不用修改源程序,这个文本文件就是应用程序的配置文件。传统的配置文件通常采用如下格式:

#Db.Properties

DBServer=192.168.0.100

Port=1443

Database=emp

Username=zxx

Password=123

上面这种格式的配置文件只能表述一些简单的信息,而很难表达具有层次结构和数据项目要动态增加的信息。例如,如果要在一个文件中表达出“一个国家中的每个省及省长的名称、每个省下面的每个市及市长的名称、每个市下面的每个镇及镇长名称”,使用上面的格式就很难表达。采用XML格式的配置文件很容易表达出这种层次结构,具体细节请参看本章后面部分的讲解。

文档声明

在一个完整的XML文档中必须包含一个XML文档声明,该声明必须位于文档的第一行。这个声明表示该文档是一个XML文档,以及遵循的是哪个XML版本的规范。最简单的XML文档声明语法如下:

<?xml version="1.0" ?>

在“<”和“?”之间、“?”和“>”之间以及第一个“?”和xml之间不能有空格,这就是XML语法严格性的一个体现。在第二个“?”之前可以没有、也可以有一个或多个空格。声明语句中的version属性表示XML的版本,因为解析器对不同的版本的解析肯定会有区别,尽管目前只有1.0版本,但在声明中必须指定version属性。

由于人们可以采用不同的字符编码集来书写一个字符内容完全相同的XML文档,所以,XML软件工具(包括分析器)就需要知道该XML文档所使用的字符编码方式。这可以通过在XML文档声明中指定encoding属性来说明,例如,使用下面的语句来指明文档中的字符编码方式为GB2312编码。

       <?xml version="1.0" encoding="GB2312" ?>

W3CXML1.0规范里规定,所有的XML解析器必须接受UTF-8UTF-16编码的Unicode字符,所以,符合 XML 规范的软件工具一定都支持这两种Unicode编码。如果XML声明中没有设置encoding属性来明确指定文档所用的字符编码方式,则一律以Unicode编码看待。XML解析器通过寻找XML文档开始处的字节顺序标记,能够自动检测出文档中的Unicode编码是UTF8,还是UTF16。也就是说,encoding属性默认的设置是Unicode编码,如果文档中的字符是以UTF-8或者是UTF-16作为编码,则可以不设置这个属性。

XML文档声明语句中,还可以指定另外一个可选属性:standalone,例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

standalone属性用于说明文档是否是独立的,如果将其设置为“yes”,则表示该文档没有依赖外面的任何文件而可以独立存在,即不需要DTD文件来验证其中的标识是否有效,也不需要XSLCSS文件来控制其显示外观;将standalone属性设置为“no”时,则表示该文档依赖于外面的某个文件,例如,依赖于某个DTD文件或XSLCSS文件。standalone属性的默认值为“yes”。

注意:如果同时设置了encodingstandalone属性,standalone属性要位于encoding属性之后。

:动手体验:加深对encoding属性的理解

对于含有中文字符的XML,其中的字符可以采用unicode来编码或GB2312(简体中文字符编码)编码来表示,如果文档中的字符使用的是GB2312编码,则必需设置为encoding属性为GB2312,下面通过一个实验来说明这个问题。

1)用Windows自带的记事本程序创建一个名为book.xml的文件,文件内容如例程1-1所示。

例程1-1  book.xml

 


<?xml version="1.0" ?>

<书架>

    <>

        <书名>Java就业培训教程</书名>

        <作者>张孝祥</作者>

        <售价>39.00</售价>

    </>

    <>

        <书名>JavaScript网页开发</书名>

        <作者>张孝祥</作者>

        <售价>28.00</售价>

    </>

</书架>

 

 


2)用IE5.0以上的浏览器打开book.xml文件,看到的结果如图1.2所示。

 

错误提示的信息是“文本内容中发现无效字符”,这就是因为在book.xmlXML文档声明语句中没有明确指定文档中的字符编码方式,浏览器就会用默认的Unicode编码来解析该文档,而该文档中的字符实际上使用的是GB2312编码,而非Unicode编码。

3)单击浏览器的“查看”à“源文件”菜单,将打开的book.xml文件内容中的第一行修改成如下形式:

    <?xml version="1.0" encoding="GB2312" ?>

保存修改后,刷新显示book.xml文件的浏览器窗口,看到的结果如图1.3所示。单击某个标签前面的减号(-),嵌套在该标签中的所有内容将被折叠起来,标签前面的减号(-)也将变成加号(+)。单击某个标签前面的加号(+),嵌套在该标签中的所有内容将被展开,标签前面的加号(+)也将变成减号(-)。

4)在上面打开book.xml文件的记事本程序中,单击“文件”à“另存为”菜单,在打开的“另存为”对话框中,选择“保存类型”为“所有文件”,编码为“UTF-8”,如图1.4所示。

UTF-8编码保存book.xml文件后,尽管在记事本程序窗口中显示的效果没有任何变化,但是book.xml文件内部存储的数据已经改变,这通过比较book.xml保存前后的文件大小就可以看出来。刷新显示book.xml文件的浏览器窗口,看到的结果如图1.5所示。

因为现在的book.xml文件的字符编码已经转换为UTF-8,而文档的起始声明中指定encoding属性为GB2312,所以,浏览器在解析book.xml文件时会发生错误。

5)将book.xml文档起始声明的encoding属性修改为UTF-8,保存后刷新显示book.xml文件的浏览器窗口,就又可以看到类似图1.3所示的正常显示效果了。

Android学习--XML基础

本章内容 1.XML简介 1.XML简介    XML=Extensible Markup Language(可扩展标记语言)    它为标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的...
  • u014581901
  • u014581901
  • 2015年12月20日 15:15
  • 655

XML学习2:XML基本语法(一)

导入        一个XML文件可分为如下几部分内容:文档声明 、元素、属性、注释 、CDATA区 ,特殊字符 、处理指令 (processing instruction)等。        ...
  • erlian1992
  • erlian1992
  • 2016年06月02日 20:20
  • 4605

XML 从入门到精通(一)XML基础

本文为XML基础,其中着重强调了XML与HTML的区别。
  • lantingxv_jing
  • lantingxv_jing
  • 2013年12月03日 20:22
  • 1554

XML——XML介绍和基本语法

本文介绍了XML语言的历史,以及它的作用和常见的应用。重点介绍了XML文件的语法规则...
  • ggGavin
  • ggGavin
  • 2016年05月26日 22:31
  • 2663

Android基础入门教程——7.2.1 Android XML数据解析

前面两节我们对Android内置的Http请求方式:HttpURLConnection和HttpClient,本来以为OkHttp 已经集成进来了,然后想讲解下Okhttp的基本用法,后来发现还是要...
  • zpj779878443
  • zpj779878443
  • 2015年09月08日 15:58
  • 4318

android应用程序第3课:xml的简单语法规则

XML 文档的第一行可以是一个 XML 声明: 创建根元素 根元素的开始和结束标记用于包围 XML 文档的内容。一个文件只能有一个根元素,并且需要使用 “包装器” 包含它。 清单...
  • a421701136
  • a421701136
  • 2016年06月12日 11:55
  • 395

[Unity基础]xml在unity中的使用

原文链接:http://www.xuanyusong.com/archives/1901 XmlDocument:CreateElement(创建节点)、AppendChild(添加节点,使被添加...
  • lyh916
  • lyh916
  • 2015年04月18日 18:59
  • 1113

XML笔记-XML基础

以下都是对W3CSchool网站上的一些知识点记录,便于日后查看和理解。 一、什么是XML? XML:Extensible Markup Language,可扩展标记语言。 XML的设计...
  • qq_19865749
  • qq_19865749
  • 2016年09月19日 21:21
  • 199

WEB前端(HTML、XML、CSS、JS)学习笔记

HTMLHTML: HyperText Markup Language 超文本标记语言。 HTML是最基础的网页语言。 HTML的代码都是由标签所组成。 HTML的基本格式 ...
  • me4405801
  • me4405801
  • 2016年01月24日 10:24
  • 623

XML——xml语言基础

XML-Extensible Mark-up Language,可扩展标记语言。XML是W3C发布的,只有一个版本,就是1.0; 问题 XML和HTML有什么关系,他们的区别又是什么呢? 其实,...
  • panpan_1994
  • panpan_1994
  • 2016年08月07日 11:44
  • 191
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XML基础
举报原因:
原因补充:

(最多只允许输入30个字)