XML已死 ?

近十几年来唱衰XML的声音一直不曾间断过,作为曾经风靡一时的可扩展标记语言,似乎真的江河日下了。近期在跨部门合作过程中,有幸得以接触到以XML作为通用配置的大型工程项目,然而在开发过程中逐渐感受到这种面向xml配置的编程方式使得简单的问题变得复杂。同时,这种自定义的高度可配置化的方式对于项目管理又特别清晰高效。于是对关于如何正确看待XML这个问题陷入了思考….

1、XML发展历史

首先来简单回顾下XML几个重要发展节点:

  • 1978 年,ANSI 将 IBM二十世纪60年代发展起来的GML(Generalized Markup Language)标准化后,发布成为 SGML(The Standard Generalized Markup Language),这成为XML的前身。
  • 1986年,SGML作为一种通用标记语言,为国际标准化组织ISO所采用,但由于SGML定义过于复杂,无法普及。
  • 1995年,考虑到当时HTML的缺陷,作为简化与优化的XML雏形已经形成,并向W3C提案
  • 1998年2月,XML1.0发布,正式成为W3C的标准。

虽然XML生而是为解决HTML的一些弊病,并取而代之。但事与愿违,众所周知XML并没有取代HTML成为新的超文本标记语言。
不过这丝毫不妨碍XML不断发展演化并被广泛用作跨平台数据交换的格式:主要针对数据的内容,通过不同的格式化描述手段(XSLT,CSS等)可以完成最终的形式表达(生成对应的HTML,PDF或者其他的文件格式)。

:HTML也是基于SGML,准确来说HTML是SGML的一个应用(基于SGML的超文本版本)。

没错,JSON是一种优秀的数据交换格式,但是它仅仅是一种数据交换格式(与XML对比)。

2、XML VS JSON

很多开发者唱衰XML也并不是空穴来风,在WEB技术如此炙热的年代,JSON似乎已经成为了一种事实上的WEB交换数据格式标准。

如果严格地从定义上来讲,XML与JSON并不是同一样东西。XML是一种标记元语言,而JSON则是一种轻量级的数据交换格式。从这个点上说,XML与JSON是无法比较的。很多时候时候我们在说XML VS JSON,实际上是指XML作为数据交换格式与JSON这种数据交换格式的比较。

虽然JSON是作为JavsScript的一个子集诞生的,但是它独立于语言。JSON得益于其本身的小巧、简单以及浏览器内建快速解析支持的特性,使得其更适用于网络数据传输领域,在web2.0时代更是一路高歌猛进。

下面是Google Trends和StackOverflow Insights上的数据:

Google Trends
clipboard.png

StackOverflow Insights
clipboard.png

可以看出,在2013年左右JSON热度逐渐超过XML。

尽管,JSON在语义表达、数据存储以及检索方面远不及XML,但就是因为其简单、轻量使得其大肆流行于市场。

:从这个点上的启发是简单好用比全面更容易普及。比如当年的OSI七层网络协议与TCP/IP四层协议之争,同样的道理:简单是流行的前提。

3、XML真的死了吗?

看着如此趋势,不免会心生疑问:XML真的死了吗?
答案当然是否定的。
这其实是一种认知偏见,见得少不代表事实上不多。比如segmentfault上大都是偏前端类的技术文章,这说明难道后端技术都消失了嘛?明显不是。

曲线只能说明某种场景下未来的一种趋势,比如在web领域的确xml是不如json使用的广泛。但是在面向SOA架构的企业级软件应用中,XML仍是信息交换的事实标准。XML作为一个可以自定义标签的元标记语言,在描述复杂的业务逻辑时尤其特别适用。
并且, 在当今的出版业中,整个文档处理工作流程都要使用XML。它也是标准的Office文件格式,例如Word、Excel、PowerPoint或Google Docs等。

故,XML并没有死,只是某些领域应用减少,但是其他领域特别是企业级仍然有很多应用。

References

https://www.quora.com/Is-XML-...
https://zh.wikipedia.org/zh-h...
https://www.itcodemonkey.com/...
http://www.cftea.com/c/444.asp
http://siddim.com/archives/47...
https://zh.wikipedia.org/zh-h...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值