IOS-分析JSON、XML的区别?JSON、XML解析方式的底层是如何处理的?

来源:互联网 发布:电脑软件职业技术培训 编辑:程序博客网 时间:2024/05/17 02:59

区别:

1)可读性方面:基本相同,xml的可读性比较好

2)可扩展性方面:都具有很好的扩展性

3)编码难度方面:相对而言:JSON的编码比较容易

4)解码难度:json解码难度基本为零,xml需要考虑子节点和父节点

5)数据体积方面:json相对于xml来讲,数据体积小,传递的速度更快些

6)数据交互方面:json与JavaScrpit的交互更加方便,更容易解析处理,更好的数据交互

7)数据描述方面:xml对数据描述性比较好

8)传输速度方面:json的速度圆圆快于xml JSON底层原理:遍历字符串中的字符,最终根据格式规定的特殊字符,比如{}号,[]号,:号等进行区分,{}号是一个字典的开始,[]号是一个数组的开始,:号是字典的键和值的分水岭,最终仍是将json数据转化为字典,字典中值可能是字典,数组,或字符串而已。

XML底层原理:XML解析常用的解析方法有两种:DOM解析和SAX解析。DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。DOM解析把XML文档转化为一个包含其内容的树,并可以对树进行遍历。使用DOM解析器的时候需要处理整个XML文档转化为一个包含其内容的树,并可以对树进行遍历。使用DOM解析器的是时候需要处理整个XML文档,所以对性能和内存的要求比较高。SAX在解析xml文档的时候可以出发一系列的事件爱你,当发现给定的tag的时候,他可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展功能得到了更好的体现。


延伸:SAX和DOM的区别

1、SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上应用程序甚至不必解析整个文档;他可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。另一方面,由于应用程序没有以任何方式存储数据,使用SAX还比它的替代者DOM快许多。另一方面,由于应用程序没有以任何方式存储数据,使用SAX来更改数据或在数据流中往后移是不可能的。

2、DOM以及广义的基于树的处理有几个优点首先由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构做出更改。它还可以在任何时候在树中上下导航,而不像SAX那样一次性的处理。DOM使用起来简单的多。

3、选择DOM还是SAX,这取决于以下几个因素:

应用程序的目的;数据容量

4、对速度的需要:SAX实现通常要比DOM实现更快



0 0