XML解析和Json解析简介以及两者的区别
现在比较交流行和常用的对于网络请求数据的解析的方式基本就是XML解析和Json解析 下面我们来对这两种解析方式做一些总结
一、XML解析: 服务器端解析是通过一般的XSLT转换工具(如Java下的Xalan)将XML和XSL合成为HTML,送到客户端。 客户端解析是把XML和XSL都显现给客户端,把解析的任务交给浏览器。当然对于不同的解析器有不同的工作原理,目前常用的XML的解析器主要有:SAX,DOM 1、SAX 当sax分析器对xml文档进行分析时,触发一系列事件,并激活相应的事件处理函数,从上到下的顺序读取,读取一行就处理一行。它不允许对xml文件随机存取,没有把xml文档完全加载到内存,占用内存少。 SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。另一方面,由于应用程序没有以任何方式存储数据,使用 SAX 来更改数据或在数据流中往后移是不可能的,总而言之: sax解析的优点占用内存少,解析速度快,缺点是只适合做文档的读取,不适合做文档的增删改查。 相关链接:点击打开链接 2、DOM 在dom中,解析文档的结构类似为一棵树,文档、文档中的根、元素、元素内容、属性、属性值等都是以对象模型的形式表示的。Dom能够在内存中保存整个文档的模型,可以方便对xml元素。 DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。另一方面,在内存中构造这样的树涉及大量的开销。大型文件完全占用系统内存容量的情况并不鲜见。此外,创建一棵 DOM 树可能是一个缓慢的过程,总之: dom解析的优点是对文档增删改查比较方便,缺点占用内存比较大。 相关链接:点击打开链接
3、选择 DOM 还是选择 SAX,这取决于下面几个因素: SAX,DOM是两种对XML文档进行分析的方法(没有具体的实现,只有接口),所以不是解释器,如果光有他们,你是完成不了对xml文档的处理的。SAX的包是org.xml.sax,DOM的包是org.w3c.dom,包的名称很重要,它有助于你理解他们之间的关系。 4、jaxp是api,他封装了sax/dom两种接口。并在sax/dom的基础之上,作了一套比较简单的api以供开发人员使用。jaxp的包是javax.xml.parsers,可以看看jaxp的源文件,它的文件中包含了对sax或者dom的引用(import)jaxp也不是具体的实现,他只是一套api。如果你仅仅有jaxp那是无法工作的,(其实jaxp只是完成对sax、dom的包装,生成了DocumentBuilderFactory/DocumentBuilder和SAXParserFactory SAXParser。也就是设计模式中的工厂模式,他的好处就是具体的对象( 解释器)建立由子类完成) 对于XML的了解请查看链接:点击打开链接 二、Json解析:JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)体系的行为。这些特性使JSON成为理想的数据交换语言。JSON基于JavaScript Programming Language,Standard ECMA-262 3rd Edition - December 1999 的一个子集。 json解析的底层原理: 对于Json的深入了解请查看相关链接: 点击打开链接 三、XML和Json的优缺点 (1).XML的优缺点 四、XML和Json的优缺点对比: (1).可读性方面。 JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。 (2).可扩展性方面。 XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。 (3).编码难度方面。 XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。 (4).解码难度方面。 XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。 (5).流行度方面。 XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。 (6).解析手段方面。 JSON和XML同样拥有丰富的解析手段。 (7).数据体积方面。 JSON相对于XML来讲,数据的体积小,传递的速度更快些。 (8).数据交互方面。 JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。 (9).数据描述方面。 JSON对数据的描述性比XML较差。 (10).传输速度方面。 JSON的速度要远远快于XML。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |