早就知道了XML,可惜一直没有系统的学习过,这次接触Java文件传输,又用到了XML,因此就来学习学习吧。
一XML前导
对XML最好的描述
XML是独立于软件和硬件的信息传输工具。XML是W3C的推荐标准。XML无所不在,当我们看到XML标准突飞猛
进的开发进度,以及大批的软件开发商采用这个标准的日新月异的速度时,真的是不禁感叹这真是令人叹为观止。
目前,XML在Web中起到的作用不会亚于一直作为Web基石的HTML。XML是各种应用程序之间进行数据传输的
最常用的工具,并且在信息存储和描述领域变得越来越流行。
二XML基本概述
XML(可扩展标记语言),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。在电
子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。
它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传
输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的
技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的
文档信息传输。
三什么是XML?
(1)XML指可扩展标记语言(EXtensible Markup Language)。
(2)XML是一种标记语言,很类似HTML(超文本标记语言)。
(3)XML的设计宗旨是传输数据,而非显示数据。
(4)XML标签没有被预定义。您需要自行定义标签。
(5)XML被设计为具有自我描述性。
(6)XML是 W3C 的推荐标准。
四XML与HTML的主要差异
(1)XML和HTML为不同的目的而设计。
(2)XML被设计为传输和存储数据,其焦点是数据的内容。
(3)HTML被设计用来显示数据,其焦点是数据的外观。
(4)HTML旨在显示信息,而XML旨在传输信息。
(5)XML不是对HTML的替代,XML是对HTML的补充。
(6)XML不会替代HTML,理解这一点很重要。在大多数web应用程序中,XML用于传输数据,而 HTML用于格式
化并显示数据。
(7)XML被设计用来传输和存储数据。而HTML被设计用来显示数据。
五为什么需要XML
(1)解决了数据传输不规范的问题。
(2)可以非常好的描述树形结构的事物。
(3)可以用作配置文件。
六没有任何行为的 XML
XML是不作为的。也许这有点难以理解,但是XML不会做任何事情。XML被设计用来结构化、存储以及传输息。
我们在这里举一个在记事本书写的简单例子来说明一下。
下面是一个书籍列表,存储为XML:
<?xml version="1.0" encoding="gb2312"?> <书籍列表> <计算机书籍> <bookname>XML应用大全</bookname> <price>39.00</price> </计算机书籍> <计算机书籍> <bookname>Java应用大全</bookname> <price>139.00</price> </计算机书籍> <计算机书籍> <bookname>Oracle应用大全</bookname> <price>59.00</price> </计算机书籍> </书籍列表>
上面的这条便签具有自我描述性。它拥有标题以及留言,同时包含了发送者和接受者的信息。但是,这个XML文
档仍然没有做任何事情。它仅仅是包装在XML标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和
显示出这个文档。
七XML仅仅是纯文本
XML没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理XML。不过,能够读懂XML的应
用程序可以有针对性地处理XML的标签。标签的功能性意义依赖于应用程序的特性。这里的内容我们会在以后的内容
中逐渐体会到XML标签的作用。
八通过XML您可以发明自己的标签
上例中的标签没有在任何XML标准中定义过(比如<bookname>和<price>等等)。这些标签是由文档的创作者发明
的。这是因为XML没有预定义的标签。XML允许创作者定义自己的标签和自己的文档结构。
在HTML中使用的标签(以及HTML的结构)是预定义的。HTML文档只使用在HTML标准中定义过的标签(比如
<p>,<h1>等等)。
九XML树结构
我们在上面的书籍实例中可以看出XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
一个 XML 文档实例
XML使用简单的具有自我描述性的语法:
<?xml version="1.0" encoding="UTF-8"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
第一行是XML声明。它定义XML的版本(1.0))和所使用的编码(UTF-8,GBK等);
下一行描述文档的根元素(像在说:“本文档是一个便签”):<note>;
接下来4行描述根的4个子元素(to、from、heading以及body):<to>George</to>、<from>John</from>、
<heading>Reminder</heading>和<body>Don‘t forget the meeting!</body>;
最后一行定义根元素的结尾:</note>。
从本例可以设想,该XML文档包含了John给George的一张便签。
XML具有出色的自我描述性,你同意吗?
XML文档形成一种树结构
XML文档必须包含根元素。该元素是所有其他元素的父元素。
XML文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有元素均可拥有子元素:
<root> <child> <subchild>.....</subchild> </child> </root>
父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐
妹)。所有元素均可拥有文本内容和属性(类似HTML中)。
实例
上图表示下面的XML中的一本书:
<bookstore><book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
例子中的根元素是<bookstore>。文档中的所有<book>元素都被包含在<bookstore>中。<book>元素有 4 个子元
素:<title>、< author>、<year>、<price>。
十XML用途
XML常用于简化数据的存储和共享。
(1)XML把数据从HTML分离
如果你需要在HTML文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑HTML。通过XML,数
据能够存储在独立的XML文件中。这样你就可以专注于使用HTM 进行布局和显示,并确保修改底层数据不再需要对
HTML进行任何的改变。通过使用几行JavaScript,你就可以读取一个外部XML文件,然后更新HTML中的数据内容。
(2)XML简化数据共享
在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。XML数据以纯文本格式进行存储,因此提供
了一种独立于软件和硬件的数据存储方法。这让创建不同应用程序可以共享的数据变得更加容易。
(3)XML简化数据传输
通过XML,可以在不兼容的系统之间轻松地交换数据。对开发人员来说,其中一项最费时的挑战一直是在因特网
上的不兼容系统之间交换数据。由于可以通过各种不兼容的应用程序来读取数据,以XML交换数据降低了这种复杂
性。
(4)XML简化平台的变更
升级到新的系统(硬件或软件平台),总是非常费时的。必须转换大量的数据,不兼容的数据经常会丢失。XML数
据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏
览器。
(5)XML使您的数据更有用
由于XML独立于硬件、软件以及应用程序,XML使您的数据更可用,也更有用。不同的应用程序都能够访问您的
数据,不仅仅在HTML页中,也可以从XML数据源中进行访问。通过XML,您的数据可供各种阅读设备使用(手持的计
算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。
(6)XML用于创建新的Internet语言
很多新的Internet语言是通过XML创建的,其中的例子包括:
a)XHTML - 最新的HTML版本
b)WSDL - 用于描述可用的web service
c)WAP 和 WML - 用于手持设备的标记语言
d)RSS - 用于RSS feed的语言
e)RDF 和 OWL - 用于描述资源和本体
f)SMIL - 用于描述针针对web的多媒体