- 浏览: 189618 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
elena_me:
o0teamo0o 写道您的这个 缺少了一个StringUti ...
银联生成ARQC,ARPC,MAC,CVN生成 -
lemonhou:
按照要求改了,还是报一样的错
The Maven Integration requires that Eclipse be running in a JDK -
o0teamo0o:
您的这个 缺少了一个StringUtils工具类,能提供一下么 ...
银联生成ARQC,ARPC,MAC,CVN生成 -
306963591:
附件密码123456
银联生成ARQC,ARPC,MAC,CVN生成 -
lz_cleaner:
虽然有点老了,可还是谢谢你的分享。。。。
jira手册
通常解析xml文件我们主要用到的时候利用第三方的jar包如:jdom,dom4j来解析xml文件,但是这里使用的是jdk自带的解析类库,使用jdk自带的类库SAX方式解析的话,解析效率会比较高:
当我们使用jdk自带的解析类库的话,我们必须要继承DefaultHandler.java的类库:
xml事件处理类:
/** * */ package com.sandy.xml.util; import java.util.HashMap; import java.util.Map; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * @author sandy * @since * */ public class XMLHandler extends DefaultHandler { private Map<String, Object> props = null; private StringBuffer currentValue = null; public XMLHandler() { this.props = new HashMap<String, Object>(); this.currentValue = new StringBuffer(); } /** * @return the props */ public Map<String, Object> getProps() { return props; } /** * @param props * the props to set */ public void setProps(Map<String, Object> props) { this.props = props; } public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { int length=attributes.getLength(); if(length!=0){ for(int i=0;i<length;i++){ System.out.println(attributes.getQName(i)+"="+attributes.getValue(i)); } } currentValue.delete(0, currentValue.length()); System.out.println("(startElement:qName)==="+qName); // this.currentName = qName; } /** * @author sandy * 获取标签内容 */ public void characters(char[] ch, int start, int length) throws SAXException { currentValue.append(ch, start, length); System.out.println("characters+currentValue:" + currentValue); } public void endElement(String uri, String localName, String qName) throws SAXException { if (!qName.equalsIgnoreCase("root")) props.put(qName, currentValue.toString().trim()); System.out.println("(endElement:qName)==="+qName); } }
解析类:
/** * */ package com.sandy.xml.parse; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Set; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.SAXException; import com.sandy.xml.util.XMLHandler; /** * @author sandy * */ public class ParseXML { private Map<String, Object> props=null; private void parse(InputStream in) throws IOException { XMLHandler handler = new XMLHandler(); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = null; try { try { parser = factory.newSAXParser(); parser.parse(in, handler); props = handler.getProps(); } catch (ParserConfigurationException e) { System.out.println("ParserConfigurationException"); e.printStackTrace(); } catch (SAXException e) { System.out.println("SAXException"); e.printStackTrace(); } } finally { factory = null; parser = null; handler = null; } } /** * @return the props */ public Map<String, Object> getProps() { return props; } public static void main(String[] args) { ParseXML xml = new ParseXML(); String xmlString="<ROOT type='request'>" +"<stdmsgtype>0100</stdmsgtype>" +"<std400trcd>201101</std400trcd>" +"<stdprocode>201101</stdprocode>" +"<std400aqid>N</std400aqid>" +"<std400tlno>0279</std400tlno>" +"<stdlocdate>20100423</stdlocdate>" +"<stdloctime>110541</stdloctime>" +"<std400autl></std400autl>" +"<stdauthid></stdauthid>" +"<stdadddtap></stdadddtap>" +"<stdibsdate></stdibsdate>" +"<stdrefnum></stdrefnum>" +"<stdsetdate></stdsetdate>" +"<std400trno></std400trno>" +"<std400mgid></std400mgid>" +"<std400acur></std400acur>" +"<stdmercno>010100099970014</stdmercno>" +"<M_CODE>000000000000000025</M_CODE>" +"<M_CODETYPE>0</M_CODETYPE>" +"</ROOT>"; try { xml.parse(new ByteArrayInputStream(xmlString.getBytes())); Map<String,Object> m=xml.getProps(); Set<Map.Entry<String, Object>> s=m.entrySet(); for(Object o:s){ System.out.println(o); } } catch (IOException e) { System.out.println("解析xml出错!"); e.printStackTrace(); } } }
说明:这种解析方式是基于事件驱动的,运用的是基于观察者的设计模式.
发表评论
-
根据文件中jar地址生成jar
2011-08-18 10:22 1031import java.io.File; import ja ... -
java实现解压zip文件
2011-07-04 19:10 1875注意: 1:使用jdk自带的zip的util的工具类实现解压 ... -
插入clob数据(template data)
2011-05-12 12:32 1804package com.icitic.iccard.dp.te ... -
DP判断取多少字节根据银联
2011-05-12 12:26 1323/** * */ package com.icit ... -
java类的初始化
2011-03-17 15:06 1026类的初始化时机: 1:创建类的实例。 2: 访问某个类或接 ... -
dom4j解析xml
2010-12-02 17:11 2540package com.gd.xml.parse; im ... -
java实现分页
2010-11-30 21:15 2186平时我们用到的分页程序主要有两种分页方式: 1:用数据库进行 ... -
解决Struts2中表单提交到action时的中文乱码
2010-11-20 15:21 5261在struts2的开发过程中出现乱码的情况如下: 1:jsp ... -
Eclipse反编译插件: Jodeclipse与JadClipse
2010-11-03 12:20 1162Jodeclipse 是Jode的Eclipse插件,JadC ... -
java.util.logging日志功能使用
2010-09-17 15:37 1359Java Logging API是sun公司于2002年5月正 ... -
Java异常处理
2010-09-14 17:20 1307一、Java中异常概述 1.1J ... -
JVM的结构
2010-09-07 09:46 870JVM的结构 从功能上分,Java虚拟机主要由六个 ... -
System.getProperty()参数大全
2010-09-06 21:08 697java.version ... -
hibernate缓存
2010-09-06 20:30 675很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇 ... -
深入探讨 Java 类加载器
2010-09-06 16:56 761简介: 类加载器(class ... -
ClassLoader加载类的路径问题
2010-09-06 16:43 1538有的时候我们需要读取文件,文件的路径若写死了,当我们上线的时候 ... -
Thread匿名内部类为什么 必须声明为final变量?
2010-09-06 15:09 3244匿名内部类实用定义在外部的变量,该变量必须是final类型1: ... -
使用正则表达式抓取页面Email
2010-09-05 18:57 1247当我们做广告的时候,有的时候需要给很多匿名用户发Email来实 ... -
java定时器Timer,TimerTask每隔一段时间随机生成数字
2010-09-05 11:09 142761:java.util.Timer类是一种工具,线程用其安排以 ... -
Scanner读取文件和StringBuffer读取文件
2010-09-05 10:20 9151Scanner扫描器读取文件注意事项: 1:Scan ...
相关推荐
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
以下是使用SAX解析XML文件的步骤: 1. 引入依赖:在Android项目中,通常需要添加`xmlpull`库,它包含了SAX解析器。可以在`build.gradle`文件中添加依赖: ``` implementation 'xpp3:xpp3:1.1.4c' ``` 2. 创建...
本示例将详细解释如何在Java中使用SAX解析XML文档,并通过注释进行详细说明。 首先,我们需要引入SAX解析器的依赖库,通常这可以通过在项目构建配置中添加JAXB或Xerces实现来实现。 ```java // 引入必要的库,如...
**SAX解析XML的基本原理:** SAX解析器以流式的方式读取XML文档,当遇到文档的各个元素时,会触发相应的事件,如开始文档、开始元素、结束元素、字符数据等。程序员通过实现SAX解析器的回调接口来处理这些事件,从而...
以下是一个使用SAX解析XML文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...
总结来说,"saxloadxml"项目提供了使用SAX解析XML文件的一个实例,可以帮助开发者了解如何利用SAX解析器处理XML文档,尤其是在性能和内存使用方面有较高要求的情况下。通过学习和实践这个项目,你可以提升处理XML...
### 使用SAX解析XML文件详解 #### 一、XML与SAX简介 XML(Extensible Markup Language,可扩展标记语言)是一种用于标记电子文件使其具有结构性的标记语言,旨在克服HTML的一些不足,使得数据能够被不同系统间共享...
本主题将深入探讨如何在Servlet中利用SAX解析XML文档。 首先,我们需要了解SAX解析的基本原理。SAX解析器不创建整个XML文档树,而是当遇到XML文档的各个部分(如元素、属性、文本等)时,触发相应的事件回调函数。...
- `xmlSAXPaserDemo`可能是一个包含示例代码的Android项目,用于演示如何实际使用SAX解析XML文件。 - 项目中可能包括网络请求模块、SAX解析器处理类以及展示解析结果的UI部分。 通过以上步骤,开发者可以在...
Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有源码)Servlet利用SAX解析XML文档(新上传的有...
首先,让我们了解一下SAX解析XML的基本流程。当SAX解析器读取XML文件时,它会按照文档顺序触发一系列事件,这些事件对应于ContentHandler接口中定义的方法。以下是ContentHandler接口的一些关键方法: 1. `start...
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
通过以上步骤,我们就能使用SAX解析XML文档了。这种解析方式适用于处理大文件,因为它不会一次性加载整个XML文档到内存,而是按需逐行读取,从而节省内存资源。在实际项目中,可以根据需求定制ContentHandler来实现...
Java中,可以使用`SAXParserFactory`来生成`SAXParser`,然后调用`parse()`方法解析XML文件。例如: ```java SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory....
5. **解析XML文档**:使用解析器和事件处理器解析XML文件。 ```java MyHandler handler = new MyHandler(); parser.parse(new File("path_to_xml_file.xml"), handler); ``` 在实际应用中,我们可能还需要处理...
下面将详细介绍SAX解析XML文件的基本原理、工作流程以及在Android环境下如何实现。 **SAX解析的基本原理:** SAX解析器在读取XML文档时会触发一系列的事件,如开始文档、结束文档、开始元素、结束元素、字符数据等...
通过以上步骤,你可以在Android项目中有效地使用SAX解析XML文件。这不仅可以降低内存消耗,还能提高应用程序的性能。记得在实际应用中,根据XML文件的结构和需求,自定义事件处理器,以满足特定的业务逻辑。在代码...
要使用SAX解析XML文件,我们需要遵循以下步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器。Android提供了一个内置的`DefaultHandler`类,我们可以继承它并重写其中的方法来处理解析过程中遇到的事件。 ...