![]() |
1
7
我认为JSON已经在很大程度上取代了XML与Web服务器进行客户端通信,但这很可能是它的优势所在。如您所述,XML提供了适合服务器到服务器交互的优势。 |
![]() |
2
14
简短回答:是和否(根据以下评论编辑) 存在根本性的差异和权衡。XML是一种 标记 语言,特别适用于文本文档(XHTML、DocBook、各种Office文档)。 对许多其他任务来说都足够好。问题主要是因为它具有层次结构模型(而不是SQL中的关系模型,或OO语言中的对象图模型)。 JSON是一个 对象标记 这意味着它更适合处理面向数据的用例;在XML类型起作用的情况下,但是在克服对象模型和层次模型之间的阻抗方面有更多的成本。 JSON不是一个完美的工具——它仍然是数据,而不是对象(没有标识,不能做完整的图形)——但它比XML更自然。 因此,可以更容易地构建工具来进行良好、体面和简单的数据绑定。 所以:两者都有足够的空间,我希望两者都能长期使用。 并非总是以最佳的方式,但这两者都可以很好地完成大量用例。 值得一提的是,自从写下我最初的答案以来,我已经看到JSON绝对地消灭了我为之工作过的公司的面向数据/数据交换用例的XML。SOAP(ETC)将开始显著萎缩,“普通的JSON”数据交换(特别是以RESIC框架,例如JAX-RS为Java)将接管。 然而,XML对于文本标记更好。 |
![]() |
3
8
我大胆的论点是这样的替代 不可能的 毕竟,由于这些数据格式(JSON和XML)是 不同的 .
因此,回答这个问题的最佳方法实际上是展示这些格式是如何不同的,即完成比较。请原谅我所说的明显的,但我只希望这将是有趣的,甚至是有用的。如果我们首先同意简单的术语,它将有助于:
因此,实际上这两个概念都涉及数据维护的不同方面(例如IO)。例如,特定数据类型的索引数组是( 均质 )结构和它可以作为一个序列访问(读/写)( 邻接的 格式)。 wikipedia有一篇关于json的伟大文章,其中包含许多替代方案,比如(已经命名为lisp的)s-expressions、python嵌套结构、php数组、yaml等(注意,我们不考虑像.ini文件这样的字典,因为它们缺少多个嵌套)。所有这些格式都可以看作是某种数据结构的表示——树。我们可以说它们在这个意义上是同构的。每个表示都可以映射到树上,这样就不需要进行额外的处理(例如,形式语言的语法不会更改)。还有一个反向映射。 你可能会说这是“某种”理论,但它对实践意味着什么?其含义是,如果我们通过以下方式比较XML和JSON:
我们将发现更多的实际差异。主要是XML是 标记 语言(如前所述)。是的,要进行折叠,它能够混合名称空间和属性,从而产生更高的“并行”嵌套顺序。 在过去的两年里,我一直在忙着将XML表示形式来回转换为Python嵌套结构。我唯一的苦涩结论是,它们完全是相容的。要表示属性和名称间距,应在树表示中转义(例如,带前缀)此信息。因此,再次强调,XML绝对不是一棵树;-)由于具有“标记”功能,因此,它可以立即(无需编码、封装或转义)表示比树复杂得多的结构,即。 类型树 . 具有特殊顶点类型的树(同样通过名称空间和属性)。 还有其他的困难和危险,比如解析和映射
变成一棵树,没有预先决定的约定(如何打破..文本“?”或者保留XML中遵循的顺序。 显然,不等价的事物很难互相替代。从这个意义上讲,XML比嵌套结构更复杂。 有关行业的部分问题似乎得到了很好的回答,即XML将保持服务器端和面向文档的技术。主要是因为它具有优越的数据输入能力。此外,也有很多研究仅仅以XML作为标记语言来进行。 请原谅我离主题太远,讨论了JSON的流行程度,但它似乎部分相关;) 我想强调一下JSON 对象标记 )完全无法通过设计(它是javascript)掌握任何自定义类型信息(它枚举类型而不提供“运行时”引用或上下文),因此无法传递高度耦合的对象化数据。类型信息将始终抽象为JSON本机类型。这限制了面向类型开发(类型检查、约束、强制转换、委托等)的能力。但是,imho这个非常关键的问题被大多数现代编程语言(我知道)与JSON共享,它们缺少像XML那样复杂的嵌套定制数据类型(对象或函数不是文档)。似乎XML本身只是在无意中做的,而不是在设计中。 因此,在使用JSON时,我们采用了与使用流行的动态语言处理“duck”类型数据类似的策略。因此,这是JSON的另一个特性——允许快速编码,但在变得太大(嵌套和复杂)时,可能会出现体积过大的风险。 JSON比XML更像是一把瑞士刀,因为它更简单 . 因此,JSON不利于与Java之类的强类型语言互操作,但另一方面,它允许通过鼓励抽象分解来降低耦合。由于有时丢失类型信息可能是一件好事(折减系数),因此它允许更简单的架构。ActionScript更喜欢在JSON中进行实际的通信(但他们也提出了自己的AMF)。最后,JSON与KISS(如RESTful)设计的结合非常好。JSON的购买速度快且简单。但人们通常会忽略的是,当kiss不可能实现,领域逻辑过于复杂时——设计DTD和XSD,思考格式等等——应该由某人来完成(通常在稍后,当cool kiss方法由于缺乏设计能力和经验而失败时)。重点是 JSON是一个很好的工具,它缺乏应用程序的规模 . |
![]() |
4
3
替换XML?哪个XML? 有 “XML-数据结构的类型” 和 “xml-此结构的文本表示形式” . 因此,尽管XML的文本表示可以用多种方式替换 (json,yaml,…)不会取代结构特性。 (有一棵树、具有属性的元素、子元素和文本节点)。 存在存储和/或处理XML结构化数据的格式,而 忽略了文本形式。实例:
因此,XML的文本表示可以通过转换来“替换” 将标准的XML符号转换为其他符号,然后再返回。 (XML到JSON,返回XML) 但是,结构特性和基于它们的所有技术, 不能“替换”,因为这只会 打破所有标准 . 所以没人这么做。只有其他的文本表示 被读取到内存中的DOM或其他格式,实现更高级别的抽象 因此忽略了潜在的文本形式。 |
![]() |
JobProcessTask · 如何读取此xpath表达式? 2 年前 |
![]() |
MBF · PHP导入/解析XML文件内容保存到数据库 2 年前 |
![]() |
TenkMan · SQL Server XML嵌套值查询表单990 2 年前 |
![]() |
Mohan.Murali.Peddini · XSLT模板循环记录 2 年前 |