- 浏览: 50005 次
文章分类
最新评论
在上一篇中http://gaofulai1988.iteye.com/blog/2262673,主要讲解了DOM解析xml,它最大的不足之处是要在解析之前要载入这个XML文件,如果这个文件很大,它的效率就不高了。后来有人提出了基于标签事件触发的方式来解析XML文件。什么意思呢?
如果遇到一个<,那么它是一个标签的开始,如果遇到/>那么它是一个标签的结束。这些特殊标志出现的时候,就会触发一个事件来处理。
还是之前的那个XML。
代码如下:
上面加了一个特殊的输出,主要是为了看方法触发的先后情况。不管是startElement还是endElement,它们之后都会调用characters()这个方法,所以为什么要在endElement中将tag置空的原因。
如果遇到一个<,那么它是一个标签的开始,如果遇到/>那么它是一个标签的结束。这些特殊标志出现的时候,就会触发一个事件来处理。
还是之前的那个XML。
<?xml version="1.0" encoding="UTF-8"?> <Students> <student> <NO id="123">123456</NO> <NAME>abc</NAME> </student> <student> <NO id="234">456789</NO> <NAME>def</NAME> </student> </Students>
代码如下:
public class SAXDemo extends DefaultHandler { String tag; public static void main(String args[]) { try { SAXParserFactory sf = SAXParserFactory.newInstance(); SAXParser sp = sf.newSAXParser(); SAXDemo reader = new SAXDemo(); sp.parse(new InputSource("D:" + File.separator + "test.xml"), reader); } catch (Exception e) { e.printStackTrace(); } } // 处理标签的值 @Override public void characters(char ch[], int start, int length) throws SAXException { System.out.println("outprint value"); if (tag.equals("NO")) { System.out.print("\tNO:" + new String(ch, start, length)); } if (tag.equals("NAME")) { System.out.println("\tNAME:" + new String(ch, start, length)); } } // 一定要写这个end方法,并且重新赋值 // 遇到/> 就会触发这个方法 @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("2."+qName); tag = ""; }; // 遇到 "<" 就会触发这个方法,qName就是标签名,Attributes是标签的属性 @Override public void startElement(String uri, String localName, String qName, Attributes attrs) { System.out.println("1."+qName); if (qName.equals("NO")) { // 输出属性的值 System.out.print("id:" + attrs.getValue(0)); } this.tag = qName; } }
上面加了一个特殊的输出,主要是为了看方法触发的先后情况。不管是startElement还是endElement,它们之后都会调用characters()这个方法,所以为什么要在endElement中将tag置空的原因。
发表评论
-
Java IO 读文件的各种方法总结
2016-01-01 15:00 667IO分为字节流和字符流,字符就是简单的字符串存储,从理伦上讲, ... -
动态代理的应用
2015-12-22 17:30 692代理模式作为开发人员 ... -
Java Restful
2015-12-19 14:01 399对于两个系统之间交互信息,有两种常见的方式:webservic ... -
request.getInputStream() 只能读一次的解决方法
2015-12-17 12:17 2296我们知道request.getInputStream()只能读 ... -
java Hessian 版本冲突问题解决方法
2015-12-11 19:44 821今天在实际的项目发现了一个问题就是hessian的版本不兼容的 ... -
ThreadPoolExecutor参数讲解
2015-12-10 08:14 7791. 线程池可以节省创建多个线程带来的开销问题。 2. 线程 ... -
Java RSA 加密 解密 签名 验签
2015-12-09 10:01 58751. 加密的作用 1)明文变密文(你不知道密钥是很难解密的) ... -
Java Xstream xml 与bean之间的转换
2015-12-09 08:31 695xml文件如下: <mvc> & ... -
XPATH 解析XML
2015-12-09 08:28 4011. 表达式描述 nodename 选取此节点的所有子节 ... -
Java Dom4j 解析XML
2015-12-09 08:23 330Dom4j和JDom是很相似的,用起来十分方便。 XML文件 ... -
Java JDom 解析xml
2015-12-09 08:22 363JDOM在解析XML在代码量之上比之前的方法(DOM和SAX要 ... -
Java XML解析系列
2015-12-08 18:00 682Java解析XML有多种方式,因此需要分为几个不同的系列来讲。 ... -
Java 背包算法计算从数组中找若干个数使其最接近某个数
2015-12-08 17:38 1939背包的算法的动态方式如下: f(i,w) = max{ f(i ... -
C3P0 连接分析
2015-12-01 19:05 853最近在看C3P0的原理,还是将C3P0的源码导入到Ecplis ... -
微信开发的原理
2015-11-30 10:10 1279微信在现在的生活中,扮演着举足轻重的角色,现在怎么东西都在微信 ... -
JAVA Timestamp 与Data的转化以及BigDecimal 保留两位小数
2015-11-27 14:47 16031. BigDecimal 保留两位小数 今天在项目中遇到这 ... -
java try catch finally return 继续
2015-11-27 13:45 367之前在博客中有一篇文章讨论过异常中return值的情况,有兴趣 ... -
Java JDBC executeBatch 批量操作
2015-11-27 08:05 1552对JDBC 的 CRUD操作,我相信对于每个开发人员来讲,是十 ... -
Java WeakHashMap 分析
2015-11-26 08:17 581昨天在我们的系统中看 ... -
加密与解密
2015-11-18 18:12 443我本身不是学密码出身的,但在工作中经常要使用加密与解密的东东, ...
相关推荐
JAVA SAX解析XMLJAVA SAX解析XMLJAVA SAX解析XML
Java SAX解析Xml Demo(详细注释)
java demo,采用sax解析xml
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
一个实现java解析RSS的demo,比较实用。
NULL 博文链接:https://wang-peng1.iteye.com/blog/1133695
NULL 博文链接:https://lujo20121128.iteye.com/blog/1736765
Sax解析xml文件详细例子,解析复杂节点的xml,把内容显示到view中,例子简单完整,易用
java学习笔记——使用DOM解析XML和使用SAX解析XML
利用JSP直接读写XML文件,分别用DOM解析器和SAX解析器加以实现,非常适合初学者入门,作为一个了解jsp与XML的台阶
1、java SAX方式的XML解析 和 Myeclipse工程源码 2、java 正则表达式详解和常用例子
使用sax解析xml的源代码
JAVA100例之实例69 JAVA使用SAX解析XML
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
java读取RSS-SAX解析XML的实例,java语言编写,使用时只需要在main方法中将参数换成自己的RSS地址即可。
java从服务器读取xml文件并以SAX方式解析附带(服务器与解析源码)
使用java语言对XML文档进行解析的示例,包括DOM,SAX方式,并包括使用jdom和jom4j框架进行XML解析或生成XML文档
java操作xml,包括dom、sax解析
java解析XML文件java解析XML文件java解析XML文件java解析XML文件java解析XML文件java解析XML文件
java中dom解析和sax解析xml文件对比示例!