XML解析

1、概述

  xml解析分为DOM解析,SAX解析,JDOM解析。DOM是基于节点的,必须遍历树的所有节点取出值,SAX是基于事件的,触发事件解析XML,  即SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。 

2、练习

3、各种解析方式的比较

一、DOM:拉模型,把整个文档加载到内存中
        优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;
        缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;
       使用场合:一旦解析了文档还需多次访问这些数据;
                           硬件资源充足(内存、CPU)
二、SAX:推模型,事件驱动编程,基于回调

       SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。
       优点:不用事先调入整个文档,占用资源少;

       缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;
                    无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;
      使用场合:

  数据量较大的XML文档,占用内存高,机器内存少,无法一次加载XML到内存;

只需XML文档的少量内容,很少回头访问;
                          

三、JDOM 
       为减少DOM、SAX的编码量,出现了JDOM;
        优点:20-80原则,极大减少了代码量,提供常用API减少重复劳动
       使用场合:要实现的功能简单,如解析、创建等
                           Java程序
        但在底层,JDOM还是使用SAX(最常用)、DOM

1)  DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J. 

2)JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM.虽然JDOM的开发者已经说明 他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语 言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在 javascript中使用DOM)。 

3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。 

3、室内的运用

  1)云端转码组件是解析HTML

  2)前后台交互的json报文,双方都需要解析XML报文,获取想要的值

4、思考

 http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html

原文地址:https://www.cnblogs.com/wanghongye/p/4756207.html