热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XML已死?

近十几年来唱衰XML的声音一直不曾间断过,作为曾经风靡一时的可扩展标记语言,似乎真的江河日下了。近期

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

一、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的超文本版本)。

二、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 :

XML已死 ?

StackOverflow Insights :

XML已死 ?

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

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

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

三、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...

以上所述就是小编给大家介绍的《XML已死 ?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
author-avatar
丰田高耗能妨功害能侠盗飞车_948
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有