工作中遇到一些xml文件,之前都只是听过名字,今天来认真了解一下它到底是什么。
博客来源:W3School
XML简介
XML是 可扩展标记语言 (Extensible Markup Language)
XML也是一种标记语言,很类似HTML
但是,XML被设计用来传输和存储数据;HTML被设计用来显示数据
XML的标签没有被预定义,需要使用者自行定义标签。
XML被设计为具有自我描述性,是W3C的推荐标准。
由上边的介绍可知,其实XML和HTML都是标记语言,但是彼此存在的目的不用,作用也不同。HTML旨在显示信息,而XML旨在传输信息。
XML是没有任何行为的。也就是说,XML不会做任何事情,只被用来结构化,存储以及传输信息
例如,我们把John写给George的便签存储为XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
这条便签具有自我描述性,能够显而易见的看出其中的标题,留言,发送者,接受者等信息。
但是这个XML没做任何事,仅仅是把一条便签信息包装成XML文件,我们要编写程序才能传送接受和显示这个文档。
XML 是独立于软件和硬件的信息传输工具
XML 用途
XML 应用于web开发的许多方面,常用语简化数据的存储和共享。
XML 把数据从HTML 分离
如果要在HTML文档中显示动态数据,那么每当数据改变时要花时间编辑HTML。
通过XML,数据能存储在独立的XML 文件中。让HTML专注于布局和现实,保证修改数据对显示不做影响即可。
通过几行javascript,就可以读取一个外部XML文件,然后更新HTML中的数据内容。
由于不同的软件/硬件使用不兼容的格式来存储数据,所以XML提供了独立的纯文本存储方法,让不同的程序之间共享数据变得简单,也让数据得以在不兼容的系统之间进行轻松的交换。
也有很多新的Interent语言是通过XML创建的:
- XHTML - 最新的 HTML 版本
- WSDL - 用于描述可用的 web service
- WAP 和 WML - 用于手持设备的标记语言
- RSS - 用于 RSS feed 的语言
- RDF 和 OWL - 用于描述资源和本体
XML 树结构
XML 文档形成了一种树结构,可以类比HTML的DOM树
再看之前那个XML文档实例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第一行是XML声明。它定义了XML的版本(1.0)和所使用的的编码(ISO-8859-1 = Latin-1/西欧字符集)
接下来通过自定义标签来表述信息,可以显而易见的看出这是一个便签<note>
,其中包含<from><to><heading><body>
4个子元素,他们都要用类似的形式来闭合结尾。能看出XML的自我描述性很强。
XML必须包含根元素,它是所有元素的父元素(类比一下,HTML的根元素是<html>
元素),其他元素都包含在他里面。
XML语法
XML元素的标签 一定要 闭合。
XML声明不属于XML本身的组成部分,他不是XML元素,所以不用闭合。
XML对大小写敏感。
XML也有属性,写法跟HTML类似,属性值要加引号
XML中,有一些字符有特殊意义,不能直接写,要使用字符实体:
- < 小于
- > 大于
- & 和号
- ’ 单引号
- ” 引号
XML中注释使用和HTML中一致:
<!-- 在这里写注释 -->
在HTML中,多个空格会被缩减合并为1个空格;而XML中,会保留。
XML 元素
XML元素可以包含文本和其他元素。
XML元素有属性。
XML 命名规则
XML 元素必须遵循以下命名规则:
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
- 可使用任何名称,没有保留的字词。
最好使用<book_title></book_title>
这种命名习惯。
XML元素是可扩展的:
在XML中增加信息,并不会影响原本读取XML的程序。
XML 属性
XML元素可以在开始标签中包含属性,类似HTML
属性提供关于元素的额外附加信息。但是尽量避免使用属性,改用子元素放置信息。
例子:
<!-- 使用属性 -->
<note date="08/08/2008">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<!-- 使用date元素 -->
<note>
<date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<!-- 使用扩展了的date元素(最好的方式) -->
<note>
<date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
在此我们极力向您传递的理念是:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。
XML 验证
拥有正确语法的 XML 被称为“形式良好”的XML
通过DTD验证的XML是“合法的XML”
DTD 的作用是定义 XML 文档的结构。
XML 验证器
XML错误会终止你的程序。
XML 浏览器支持
几乎所有的主流浏览器均支持 XML 和 XSLT。
查看 XML 文件
在所有现代浏览器中,均能够查看原始的 XML 文件。
不要指望 XML 文件会直接显示为 HTML 页面。
XMLHttpRequest 对象
XMLHttpRequest对象用于在后台与服务器交换数据。
这一串看起来很眼熟有没有,这不就是ajax嘛!
原来AJAX = “Asynchronous Javascript And XML”,即异步js和XML。一下子把之前学的东西都接上了。ajax的作用大家都很熟悉了就不赘述了。
所有现代浏览器都内建了供读取和操作XML的XML解析器。
解析器把XML转换为XML DOM对象 - 可通过javascript操作的对象。