JSON vs. XML

 

一. JSON相比XML的不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的 JavaScript eval() 方法进行解析
  • 使用数组
  • 不使用保留字

总之: JSON 比 XML 更小、更快,更易解析。

二. XML和JSON的区别:

XML的主要组成成分:

          XML是element、attribute和element content。

JSON的主要组成成分:

         JSON是object、array、string、number、boolean(true/false)和null。

不过,XML不是一种数据格式,而是一种语言,非常强力的一种。下面我将从几个方面来解释我为何这么说:

         <1>,XPath。要想从上述文件单独获取到发行年份,我只是查询XPath:/book/published/year/text()。但是,必须有一个XPath处理器来理解我的请求并返回2004。XPath 2是一个非常强大的查询引擎功能,等你可以把任何逻辑引入XPath请求而无需编写任何遍历逻辑在java中,例如。你可能会问:“大卫·韦斯特在2004出版了多少本书?”很容易通过XPath获得答案。JSON却不行

        <2>,属性和名称空间。您可以将元数据附加到数据中,就像上面使用id属性所做的那样。例如,数据保存在元素中,就像书作者的名字一样,元数据(关于数据的数据)可以并且应该放在属性中。这有助于组织和构造信息。最重要的是,这两个元素和属性都可以标记为属于某些确定的名称空间。在一些应用程序使用同一个XML文档,这是一个非常有用的技术。

        <3>,XML Schema。当你在一个地方创建一个XML文档时,在其他地方修改几次,然后把它转移到另一个地方,你要确保它的结构不会被任何一个动作破坏。其中一个可以使用<year>存储出版日期而另一个使用<date>和ISO-8601。为了避免结构上的混乱,创建一个补充文档,称为XML模式,并将其与主文档一起传送。每个想使用主文档的人都将首先使用提供的模式来验证其正确性。这是一种在生产中的集成测试。RelaxNG是类似的更简单的机制,如果你试过以后,会发现XML架构太复杂。

        <4>,XSL。你可以把你的XML文档的修改没有任何类似java/ruby代码。只需创建一个XSL转换文档并将其应用于您的原始XML。作为输出,您将获得一个新的XML。顺便说一下,XSL语言(它完全是功能性的)是为分层数据操作而设计的。它是比java或OOP/程序更适合这项任务的方法。您可以将XML文档转换为任何内容,包括纯文本和HTML。有些人抱怨XSL的复杂性,但请试一下。你不需要所有的,它的核心功能是非常直接的。

三、总结

          以上这些并不是一个完整的列表,但这四个特性在我看来真的很重要。它们使我的文档具有“自给自足”的能力,它可以验证自己(XML模式),它知道如何修改自身(XSL),它使我获取内部的任何东西都非常方便(XPath)。还有更多的语言,标准,和开发应用程序,XML,包括XForms,SVG,MathML,RDF,OWL,WSDL等等。但你是不太可能在一个主流的项目使用他们。JSON没有这样的特点,JSON是一种简单的数据格式,没有额外的功能。它的最佳用例是ajax。

——————————————————————

XML文档可以附上DTD、Schema,还有一堆的诸如XPath之类规范,使用自定义XML元素或属性,能很方便地给数据附加各种约束条件和关联额外信息,从数据表达能力上看,XML强于Json,但是很多场景并不需要这么复杂的重量级的东西,轻便灵活的Json就显得很受欢迎了。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值