XML(可扩展标记语言)

简介在这里插入图片描述

XML(可扩展标记语言)是一个标记语言定义了一系列的规则对于编码文件以一种机器和人类都可读的方式。W3C的XML 1.0规范和其他几个相关规范(都是免费开放标准)定义了XML.

XML的设计目标强度简洁,普遍,互联网可用。它是一个文本的数据格式通过Unicode为不同的人类语言提供强大的支持。虽然XML的设计关注在文档上,这个语言广泛应用在表现任意的数据结构就像用于网络服务中的一样。

存在一些模式系统来帮助定义基于XML的语言,而程序员开发了许多应用程序编程接口(api)来帮助处理XML数据。

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部分中,分隔符<![CDATA[和]]>被分类为标记,而它们之间的文本被分类为内容。此外,最外层元素前后的空格被分类为标记。
标签
标记是以<开头,以>结尾的标记结构。标签有三种风格:
开始标记,如

;
结束标记,例如
;
空元素标记,例如。
元素
元素是逻辑文档组件,它要么以开始标记开始,以匹配的结束标记结束,要么只由空元素标记组成。开始标记和结束标记之间的字符(如果有的话)是元素的内容,并且可能包含标记,包括称为子元素的其他元素。例如Hello, world! > /greeting>。另一个是。
属性
属性是由存在于起始标记或空元素标记中的名称-值对组成的标记结构。例如 Madonna,其中属性的名称为"src"和"alt",它们的值分别为"madonna.jpg"和"Madonna"。另一个例子是连接A到B。,其中属性名为“number”,值为“3”。XML属性只能有一个值,每个元素上的每个属性最多只能出现一次。在需要多个值的列表的常见情况下,这必须通过将列表编码为格式良好的XML属性[i]来实现,该属性的格式超出了XML本身的定义。通常这是一个逗号或分号分隔的列表,或者,如果已知单个值不包含空格,则可以使用空格分隔的列表。< div class = "内在greeting-box " >欢迎!,其中属性“class”同时具有值“inner - greeting-box”,还指示两个CSS类名“inner”和“greeting-box”。
XML声明
XML文档可以从描述其自身信息的XML声明开始。<?xml version = " 1.0 " encoding = " utf - 8 " ? >。

与json相比

例子1:传输城市数据
举几个例子:

<?xml version="1.0" encoding="utf-8" ?>
<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>Search</ui: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,不容易表示对象这种关系。
还有其他特性,就是各有利弊,选择最适合的就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值