XML已经成为一种很是通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。java
诸多web应用框架,其可配置的编程方式,给咱们的开发带来了很是大程度的便捷,但细细想来,它们的应用无一不是java bean与xml之间的转换解析。本文将对xml的两种操做标准DOM和SAX,从它们各自的特色、适用范围等方面进行简介。web
DOM (Document Object Model) :DOM标准中,採用W3C标准表示XML,有多重语言支持。所以其跨平台性很是好。编程
採用DOM规范处理xml时,会把xml文件整体载入进内存中,并在内存中创建对象树。对象树表示为Document对象,xml文件的根节点相应对象树的根节点。依次往下排列。因为整个xml文件被载入至内存中,因此基于DOM的处理对server内存要求比較高。但是正因为整个文件被载入,因此对文件自己的操做速度会比較快。注意这里所说的是文件自己,即文件被载入后的处理,比方对文件内部元素的遍历。但当文件自己很是大时。因为载入速度及对内存的占用影响,所以从整体而言。其效率不必定好。框架
适用范围:小型 XML 文件解析、需要全解析或者大部分解析 XML、需要改动 XML 树内容以生成本身的对象模型ui
使用DOM解析xml文件的步骤:spa
1.获取DocumentBuilderFactory对象。server
2.使用DocumentBuilderFactory对象生成DocumentBuilder对象。xml
3.使用DocumentBuilder对象解析xml文件获得Document对象。对象
4.从Document对象得到xml文件根节点。事件
5.经过Node节点出发得到文档信息。
SAX (Simple API for XML) :SAX规范把xml文件做为数据流来处理的,读取一部分数据。处理一部分数据,它不需要将整个文件载入进内存。所以它很是好的攻克了DOM解析中资源占用的问题。SAX规范是基于事件驱动的。将XML数据文件里的不一样内容概括为不一样的对象,解析不一样对象时会产生不一样事件,进而调用不一样事件处理器。比方在開始解析文件时会产生文件解析事件,调用startDocument事件处理器;当读取节点的时候会产生開始元素事件,调用startElement事件处理器。相同。当读取节点内容、节点解析结束、文件解析结束时,会产生相应事件,调用相应的文件处理器进行处理。
适用范围:大型 XML 文件解析、仅仅需要部分解析或者仅仅想取得部分 XML 树内容、有 XPath 查询需求、有本身生成特定 XML 树对象模型的需求
使用SAX方式解析xml文档的步骤:
1.获取SAXParserFactory对象;
2.使用SAXParserFactory对象生成SAXParser。
3.调用SAXParser对象的parser方法对xml解析,而后获取解析结果。