当我第一次看到XML时,我认为它基本上是树的表示。然后我想:重要的不是它是树木的特别好表示,而是每个人都同意的。就像ASCII一样。一旦建立,由于网络效应,很难取代。取代它的新方案必须要好得多(可能好10倍)。当然,为了国际化,ASCII(大部分)已被(大部分)取代为Unicode。
根据google trends,XML有x43领先,但正在下降 - 而JSON增长。
[已编辑] JSON会将XML替换为数据格式吗?
注意: S表达式(来自lisp)是树的另一种表示,但尚未获得主流采用。还有许多其他提议,例如YAML和协议缓冲区(用于二进制格式)。
我可以看到JSON主宰着与客户端AJAX(AJAJ?)通信的空间,这可能会传递回传播到其他系统。
基于SGML的XML比作为文档格式的JSON更好。我对XML作为数据格式感兴趣。
XML有一个JSON缺乏的既定生态系统,特别是定义格式(XML Schema)和转换它们(XSLT)的方法。 XML还有许多其他标准,尤其是Web服务 - 但它们的重量和复杂性可以说是与XML相悖,并且让人们想要一个全新的开始(类似于“Web服务”,这是从CORBA开始的新起点)。
[ 2010年3月编辑]与NoSQL一样,JSON是无模式的。
答案 0 :(得分:14)
简短回答:是和否(根据以下评论编辑)
存在根本的差异和权衡。 XML是一种标记语言,特别适用于文本文档(xhtml,docbook,各种office文档)。 对于许多其他任务而言足够好。问题主要出现在它有层次模型(而不是像SQL中的关系,或者像oo语言中的对象图)。
JSON是一种对象符号,这意味着它更适合处理面向数据的用例; xml类型工作的情况,但是在克服对象和层次模型之间的阻抗方面需要更多成本。 JSON不是一个完美的选择 - 它仍然是数据,而不是对象(没有身份,不能完整的图形) - 但它比XML更自然。 因此,构建工具以进行良好的体面和简单的数据绑定更容易。
所以:两者都有足够的空间,我希望两者都可以长期使用。 并不总是以最佳方式,但两者都可以充分利用大量用例。
值得一提的是,自从写完我的原始答案以来,我已经看到JSON绝对为我所工作过的公司的数据导向/数据交换用例歼灭了XML。 SOAP(etc)将开始显着缩小,“普通的旧JSON”数据交换(例如,使用RESTish框架,例如Java的JAX-RS)将接管。
然而,XML对于文本标记来说要好得多。
答案 1 :(得分:8)
答案 2 :(得分:7)
我认为JSON已经在很大程度上取代了XML,用于与Web服务器进行客户端通信,但这可能是它的主导地位。正如您所说,XML提供了适合服务器到服务器交互的优势。
答案 3 :(得分:3)
替换XML?哪个XML?
“XML - 数据结构的种类”和 “XML - 此结构的文本表示”。
因此,虽然XML的文本表示可以用许多方法代替 (JSON,YAML,...),它不会取代结构属性 (有一棵树,带有属性,子元素和文本节点的元素)。
存在和/或处理XML结构化数据的格式 忽略了文本形式。例子:
因此,XML的文本表示可以通过转换“替换” 将标准XML表示法转换为其他内容并再次返回。 (XML到JSON,回到XML)
但是,结构属性和基于它们的所有技术, 不能被“替换”,因为这只会打破所有标准。 所以没有人这样做。只有替代的文字表示 被读取到内存中的DOM或其他格式,实现更高的抽象级别 因而忽略了基本的文本形式。