许多人都在内心纠结,假如 JSON 和 XML 比拟,谁更好谁更快?在接下来的新项目中究竟挑选哪一个?别傻了!完整没有可比性。就像自行车和 AMG S65 ,你能说哪一个更好吗?虽然二者都是交通东西,但有些状况下,自行车反而更便利。所以 JSON 和 XML 也一样,它们都各有所长,完整没有必要举行比较。
下面举一个简朴的 JSON 数据(140个字符):
{ "id": 123, "title": "Object Thinking", "author": "David West", "published": { "by": "Microsoft Press", "year": 2004 } }
一样的数据在 XML 中会示意以下(167个字符):
<?xml version="1.0"?> <book id="123"> <title>Object Thinking</title> <author>David West</author> <published> <by>Microsoft Press</by> <year>2004</year> </published> </book>
很轻易看出个中的区分,前者更简约更轻易明白,而且能在JavaScript 中能圆满剖析。所以,我们便能够简朴粗犷地摒弃 XML 挑选 JSON 了吗?谁还会须要已用时15年的重量级言语呢?
但恰恰相反,本人就非常喜欢 XML ,且听下文剖析。
但万万别误会,本文并非在阻挡 JSON 。 JSON 确实是很好的数据花样,但它仅仅只是一种数据花样,经常被暂时用于将数据从 A 点传到 B 点。它比 XML 更简短易读,但仅此而已。
XML 是一种非常壮大的言语,而非只是纯真的数据花样。相对于 JSON 和其他简朴的数据花样来讲,如 YAML ,XML 至少有以下四个主要特性。
XPath
为了从文档中取得上文相似的出书年份,只须要发送一个简朴的 XPath 要求:/book/published/year/text() 。然则,必需得有一个 XPath 处理器来剖析要求并返回2004。好就幸亏 XPath2.0是集 functions、predicates、axes 等为一体的壮大检索引擎,在不必 Java 代码编写任何遍历的逻辑的状况下,就可以够在 XPath 要求中以自然言语情势到场任何逻辑,比方,你能够直接发出要求 “How many books were published by David West in 2004?” ,便能经由历程 XPath 取得答案。而这是 JSON 所不能做到的。
Attributes and Namespaces
能够将 metadata 加到 XML 数据中,正如上面的 id 属性一样。数据保留在元素中,比方图书作者的姓名,而 metadata(数据的数据)应当保留为属性,这会大大有利于构造和构造化信息。最主要的是,元素和属性都能够标记为属于某个 namespaces ,当多个运用运用统一 XML 文档时,这类手艺的上风会非常显著。
XML Schema
试想如许的状况,当你在一台机械上建立了 XML 文档,在其他电脑上做了数次修正,然后又传到别的电脑上运用,所以必需确保文档构造没有被中心操纵所损坏。比方能够有人用 <year> 保留出书日期,但他人又能够运用 ISO-8601 花样的 <date> 。为了防止如许的构造杂沓,我们能够建立一个申明文档 XML Schema ,和主文档一同举行保留。在每次操纵主文档之前,都须要经由历程 schema 文件搜检其正确性,这是生产历程当中的一种集成测试。 RelaxNG 也是相似的机制,但会简朴许多,假如以为 XML Schema 太甚庞杂无妨尝试用 RelaxNG。
XSL
事实上,能够不必任何 Java/Ruby 等代码就可以完成 XML 文档的修正。简朴的说,你只须要建立一个 XSL transformation 文档并将其运用于原始 XML ,然后取得一个新的 XML 。 XSL 言语(纯功用性言语)是专为分层数据操纵设想的,它比 Java 或任何其他面向对象/历程的言语都更合适这一使命。借助 XSL 能够将 XML 转换为任何情势,包含纯文本和 HTML 。许多人埋怨 XSL 太庞杂,但实在没那末难, XSL 的中心功用实在很简朴,人人无妨一试。
以上所述并非 XML 的悉数特性,但这四大特性确实用处特殊。它们不仅能够让文档的“自力更生”,还能举行自我考证(XML Schema),进而晓得怎样修正(XSL),末了还能方便地取得个中的文档内容(Xpath)。
同时,市面上另有许多以 XML 为基本生长的言语、规范和运用,包含 Xforms、 SVG、 MathML、 RDF、 OWL、 WSDL 等。但平常的主流项目中都不会用到,由于它们的针对性都太强。
设想 JSON 的用处并非是满足以上特性,只管 JSON 范畴如今勤奋尝试,包含用于查询的 JSONPath 、一些转换东西和用于考证的 json-schema ,但和壮大的 XML 比拟这只是眇乎小哉的模拟,笔者并不认为会有久远生长,而且迟早会消逝殆尽。
综上所述, JSON 是一种没有过量附加功用的简朴数据花样,其最好的运用状况是在 AJAX 下,除此之外,本人都强烈推荐人人运用 XML。
OneAPM 为您供应端到端的 Java 运用机能解决方案,我们支撑一切罕见的 Java 框架及运用服务器,助您疾速发明体系瓶颈,定位非常根本原因。分钟级布置,马上体验,Java 监控从来没有云云简朴。想浏览更多手艺文章,请接见 OneAPM 官方手艺博客。
以上就是JSON和XML-不可同日而语的详解的细致内容,更多请关注ki4网别的相干文章!