XML(可扩展标记语言)是一个标记语言定义了一系列的规则对于编码文件以一种机器和人类都可读的方式。W3C的XML 1.0规范和其他几个相关规范(都是免费开放标准)定义了XML.
XML的设计目标强度简洁,普遍,互联网可用。它是一个文本的数据格式通过Unicode为不同的人类语言提供强大的支持。虽然XML的设计关注在文档上,这个语言广泛应用在表现任意的数据结构就像用于网络服务中的一样。
存在一些模式系统来帮助定义基于XML的语言,而程序员开发了许多应用程序编程接口(api)来帮助处理XML数据。
为什么需要扩展标记语言的本质在标记语言(例如,请参阅标记语言§XML)和标准通用标记语言中进行了解释。
已经开发了数百种使用XML语法的文档格式,其中包括RSS、Atom、SOAP、SVG和XHTML。基于XML的格式已经成为许多办公效率工具的默认格式,包括Microsoft Office (Office Open XML)、OpenOffice.org和LibreOffice (OpenDocument),以及苹果的iWork(需要引用)。XML还为诸如XMPP之类的通信协议提供了基本语言。Microsoft . net框架的应用程序使用XML文件进行配置,属性列表是基于XML.[8]构建的配置存储的实现
许多行业数据标准,如HL7、OTA、FpML、MISMO、NIEM等,都是基于XML和XML schema规范的丰富特性。这些标准中有许多相当复杂,而且由数千页组成的规范并不少见。
在发布方面,DITA是一个XML行业数据标准。XML广泛用于支持各种发布格式。
XML广泛用于面向服务的体系结构(SOA)中。不同的系统通过交换XML消息彼此通信。消息交换格式被标准化为XML模式(XSD)。这也称为规范模式。
XML已在Internet上广泛用于数据交换。IETF RFC:3023,现在被RFC:7303所取代,给出了在发送XML时使用的Internet媒体类型的构造规则。它还定义了媒体类型application/xml和text/xml,它们只说明数据是xml格式的,而没有说明其语义。
本节中的内容基于XML规范。这不是XML中出现的所有构造的完整列表;它介绍了在日常使用中最常见的关键构造。
字符
XML文档是一串字符。几乎所有合法的Unicode字符都可能出现在XML文档中。
处理器和应用程序
处理器分析标记并将结构化信息传递给应用程序。规范对XML处理器必须做什么和不应该做什么提出了要求,但是应用程序超出了它的范围。处理器(如规范所称)通常被通俗地称为XML解析器。
标记和内容
组成XML文档的字符分为标记和内容,可以通过应用简单的语法规则来区分。通常,组成标记的字符串要么以字符<开头,以>结尾,要么以字符&开头,以;结尾。不是标记的字符串是内容。但是,在CDATA部分中,分隔符被分类为标记,而它们之间的文本被分类为内容。此外,最外层元素前后的空格被分类为标记。
标签
标记是以<开头,以>结尾的标记结构。标签有三种风格:
开始标记,如
例子1:传输城市数据
举几个例子:
<country>
<name>中国name>
<province>
<name>黑龙江name>
<citys>
<city>哈尔滨city>
<city>大庆city>
citys>
province>
<province>
<name>广东name>
<citys>
<city>广州city>
<city>深圳city>
<city>珠海city>
citys>
province>
<province>
<name>台湾name>
<citys>
<city>台北city>
<city>高雄city>
citys>
province>
<province>
<name>新疆name>
<citys>
<city>乌鲁木齐city>
citys>
province>
country>
var country =
{
name: "中国",
provinces: [
{ name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
{ name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
{ name: "台湾", citys: { city: ["台北", "高雄"]} },
{ name: "新疆", citys: { city: ["乌鲁木齐"]} }
]
}
例子2 :用于开发ui——xml会更友好
<ui:group layout="vertial">
<ui:block width="200" layout="horizontal">
<ui:input value="Search">ui:input>
<ui:button>Searchui:button>
ui:block>
<ui:block width="400">ui:block>
ui:group>
{
"type": "ui:group",
"layout": "vertical",
"children": [
{
"type": "ui:block",
"width": 200,
"layout": "horizontal",
"children": [
{ "type": "ui:input", "value": "search" },
{ "type": "ui:button", "label": "Search" },
]
},
{
"type": "ui:block",
"width": 400,
},
],
}
总的来说,json更容易映射到语言结构,因为用的javascript的类型。
而xml只有element跟atribute,不容易表示对象这种关系。
还有其他特性,就是各有利弊,选择最适合的就行。