该文章用公司技术分享,简单介绍,没有深入,期望javaeye们给与意见
XML即扩展标志性语言,随着软件体系的不断的成长与发展,XML的使用已经超出了原先的设想,并由很多开源组织编写大量的规范,进一步扩大它的使用范围。
作为程序员阅读XML之余,理解XML解析,也往往也会遇到解析自定义XML文件的情况,而解析XML也因情况使用不同的方式,以下介绍2种方式。
第一种:
自然是大家再熟悉不过的DOM树形式,一次性把XML文件读入内存,形成完整的DOM树。
好处:容易理解的,开源api容易上手(例如:dom4j,jdom...)
坏处:需要一次读入内存,处理大容量xml会出现内存溢出
第二种:
SAX,以流的方式处理XML,以缓存的方式陆续读取XML文件,event-base方式进行解析
好处:基于流的方式,内存开销小,仅需要一定的缓存空间,event-base方式非常适合消息通信时,解析消息
坏处:event-base,可读性较差,开发难度上升,不容易形成完整的DOM结构
以下以一个sample来介绍SAX的简单使用,在sample前我进行几个API的简单介绍
首先是 org 定义的sax的几个基础handler,每个handler都包含了对应不同事件的处理方法,通过复写这些方法即可自定义XML解析
org.xml.sax.ContentHandler //主要解析XML的API均包含在ContentHandler中
org.xml.sax.EntityResolver
org.xml.sax.DTDHandler
org.xml.sax.ErrorHandler
这些Handler提供的API即event-base的应对,替代了较早的org.xml.sax.DocumentHandler的作用,分工更细结构更清晰,详细可以参照jdk的注释
org.xml.sax.helpers.DefaultHandler
implements
EntityResolver,
DTDHandler,
ContentHandler,
ErrorHandler
是一个defaultHandler,适配了所有的事件应对接口,所以我们只需要复写defaultHandler的方法,
SAXParser parser = saxFactory.newSAXParser();
并使用复写过的handler解析XML
parser.parse(inputSource , overwriteDefaultHandler );
以下是parse的API注释
/**
* Parse the content given [email={@link]{@link[/email] org.xml.sax.InputSource} as XML using the specified
* @param is The InputSource containing the content to be parsed.
* @param dh The SAX DefaultHandler to use.
*/
public void parse(InputSource is, DefaultHandler dh)
以下附上
XML文件student.xml
SaxTest.java
见附件
分享到:
相关推荐
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
Sax解析XML文件解
Java SAX解析Xml Demo(详细注释)
Servlet利用SAX解析XML文档,JAX,JSWDP,Servlet利用SAX解析XML文档
Sax解析xml文件详细例子,解析复杂节点的xml,把内容显示到view中,例子简单完整,易用
Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有...
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
使用sax解析xml的源代码
java学习笔记——使用DOM解析XML和使用SAX解析XML
sax解析XML方式的代码及特点,sax解析XML方式的代码及特点,sax解析XML方式的代码及特点,sax解析XML方式的代码及特点
NULL 博文链接:https://wang-peng1.iteye.com/blog/1133695
绝对可用的SAX解析XML文件项目,费了九牛二虎之力,才找到的好资源,特与大家共享出来。直接导入eclipse就可运行,无需任何配置。
Android SAX 解析XML SAX 解析XML(通用)
DOM和SAX解析XML文档
JAVA SAX解析XMLJAVA SAX解析XMLJAVA SAX解析XML
sax解析xml本地读取xml,希望对你有用
SAX解析XML源码:安卓客户端程序,通过HTTP协议从服务器端获取XML文件,然后解析并输出到控制台
使用sax解析xml,有详细的解析及源代码实例
NULL 博文链接:https://mazhihui.iteye.com/blog/1535280
Sax解析xml中的某个(一部分报文节点)循环组的内容