`
zuzong
  • 浏览: 115779 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

基于Woodstox的StAX 2 解析XML

    博客分类:
  • java
阅读更多
StAX (Streaming API for XML)面向流的拉式解析XML,速度快、占用资源少,非常合适处理大数据量的xml文件。

详细教程和说明可以参见以下几篇文章:

使用 StAX 解析 XML,第 1 部分: Streaming API for XML (StAX) 简介
http://www.ibm.com/developerworks/cn/xml/x-stax1.html

使用 StAX 解析 XML,第 2 部分: 拉式解析和事件
http://www.ibm.com/developerworks/cn/xml/x-stax2.html

使用 StAX 解析 XML,第 3 部分: 使用定制事件和编写 XML
http://www.ibm.com/developerworks/cn/xml/x-stax3.html

Java6.0新特性之StAX--全面解析Java XML分析技术
http://zangweiren.iteye.com/blog/647334

Geronimo 叛逆者: 使用集成软件包:Codehaus 的 Woodstox
http://www.ibm.com/developerworks/cn/opensource/os-ag-renegade15/

本文的目的是说明Woodstox包中的StAX2应用。
Woodstox官网http://woodstox.codehaus.org/

下载woodstox-core.jar,核心包有两种开源协议apache的ASL和流行的LGPL,同时woodstox-core.jar需要stax2-api.jar的支持

stax2和stax有些不同,且对原来stax的代码不兼容

读取操作:

public XMLStreamReader2 getStreamReader(String xmlStr) throws XMLStreamException {
		XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2
				.newInstance();
		xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,
				Boolean.FALSE);
		xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,
				Boolean.FALSE);
		xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
		xmlif.configureForSpeed();

		XMLStreamReader2 xmlr = (XMLStreamReader2) xmlif.createXMLStreamReader(new BufferedReader(new StringReader(xmlStr)));
		
		return xmlr;
	}
	
	public XMLStreamReader2 getStreamReader(InputStream is) throws XMLStreamException, IOException {
		XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2
				.newInstance();
		xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,
				Boolean.FALSE);
		xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,
				Boolean.FALSE);
		xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
		xmlif.configureForSpeed();

		XMLStreamReader2 xmlr = (XMLStreamReader2) xmlif.createXMLStreamReader(new BufferedReader(new InputStreamReader(is, "UTF-8")));

		return xmlr;
	}

XMLStreamReader2 xmlsr = null;

try {
			xmlsr = this.getStreamReader(str);

			int eventType = xmlsr.getEventType();

			list = new ArrayList<OfcardMainclass>();
			// 包装大类数据
			OfcardMainclass classof = null;
			while (xmlsr.hasNext()) {
				eventType = xmlsr.next();
				switch (eventType) {
				case XMLEvent2.START_ELEMENT:
					String name = xmlsr.getName().getLocalPart();

					if (name.equals("aa"))
						String s1 = xmlsr.getElementText();
 if (name.equals("bb"))
					String s2 = xmlsr.getAttributeValue(null, "att"));
					break;

				case XMLEvent2.END_ELEMENT:
					if (xmlsr.getName().getLocalPart().equals(
							"aa"))
					break;
				}
			}
		} finally {
			if (xmlsr != null)
				xmlsr.close();
		}


1
0
分享到:
评论
1 楼 yangbaodi516 2012-01-20  
XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2.newInstance();
哥哥们强制类型转换异常,你们是怎么做的啊。能帮帮小妹吗

相关推荐

    stax-api-1.0.1、stax2-api-3.1.1、woodstox-core-asl-4.1.1

    例如,开发者可以使用woodstox-core-asl-4.1.1.jar作为底层解析器,通过stax-api-1.0.1提供的接口与XML数据交互,同时利用stax2-api-3.1.1的扩展功能来优化处理流程。这种组合在处理大量XML数据的应用,如日志分析、...

    stax2-api-4.2.1.jar

    用来解析XML文件的jar包。Streaming API for XML (StAX) 的基于事件迭代器 API 无论在性能还是在可用性上都有其他 XML 处理方法所不及的独到之处。使用前请先解压

    解析XML所需的jar dom.jar

    2. 解析XML:使用`DocumentBuilder`对象的`parse()`方法读取XML文件,返回一个`Document`对象,表示整个XML文档的根节点。 3. 遍历和操作XML:通过`Document`对象访问XML文档的各个部分,如元素(`Element`)、属性...

    woodstox-core-asl jar包下载

    《woodstox-core-asl与stax2-api:解析XML处理的高效工具》 XML(eXtensible Markup Language)作为一种通用的数据交换格式,在IT行业中广泛应用于数据存储、配置文件和网络通信等领域。为了高效地解析和生成XML...

    java解析XML文件

    Java解析XML文件是Java开发中常见的任务,XML(Extensible Markup Language)作为...在实际项目中,还可以结合StAX、Woodstox等其他XML解析库,或者使用Java 8引入的内置XML API(如`javax.xml.stream`包)来解析XML。

    XML解析框架比较

    三、StAX解析器 StAX(Streaming API for XML)是另一种流式解析方式,介于DOM和SAX之间。它允许开发者以迭代的方式读取或写入XML,既能避免DOM解析的大内存消耗,又比SAX更易于使用。Java中的StAX实现有Woodstox和...

    stax-api-1.0.1 java 操作 xml 文件 一个很好用的包

    STAX的核心理念是事件驱动,即解析XML时,每遇到一个XML元素或属性,都会触发一个相应的事件,程序通过响应这些事件来处理XML数据。与DOM(Document Object Model)不同,STAX不需要一次性加载整个XML文档到内存,...

    Java 解析 Xml

    本文将详细介绍Java中解析XML的几种主要方法,并进行对比,以帮助开发者选择最适合自己的解决方案。 1. DOM(Document Object Model)解析器: DOM解析器将整个XML文档加载到内存中,构建一个树形结构的DOM节点模型...

    解析xml详解及jar及源码

    本文将深入解析XML的基本概念、结构、解析方法,并介绍与之相关的Java库——Jar包及其源码。 XML的核心是其结构化特性,它通过元素(Element)、属性(Attribute)和文本内容来描述数据。每个XML文档都由一个根元素...

    处理大XML文件解析采用分段方式

    2. **流式API(StAX解析)**: StAX(Streaming API for XML)提供了向前只读的迭代器,允许应用程序通过调用`XMLStreamReader`的下一个事件方法逐个处理XML事件。这种方式允许开发者控制内存使用,因为它只需要...

    XML解析的三个jar包

    StAX解析器结合了DOM和SAX的优点,它允许开发者以流式方式读写XML,既可以按需处理数据,又不需要一次性加载整个文档。StAX提供了更高效的处理大型XML文档的能力。在Java中,StAX相关的jar包通常是`stax-api.jar`和...

    woodstox-core-asl-4.0.6.jar

    StAX是一种基于事件驱动的API,它允许程序以流式方式处理XML,从而减少了内存占用,提高了处理大型XML文档时的效率。与DOM模型相比,StAX不需要一次性加载整个XML文档到内存,而是通过事件驱动的方式逐个处理XML元素...

    Java解析XML

    这些是Woodstox库的实现,提供了一个高性能的StAX解析器。 在处理PDM(Product Data Management,产品数据管理)相关的XML数据时,你可能需要解析或生成包含产品信息、设计数据、版本控制等复杂结构的文件。了解和...

    woodstox-core-asl-source.rar_jax

    这些事件代表了XML文档的结构,解析器通过触发这些事件来构建和解析XML文档。 2. **字符缓冲**:为了提高性能,Woodstox使用了高效的字符缓冲机制。通过预读和复用缓冲区,减少不必要的内存分配和字符串创建。 3. ...

    用于xml解析jar包

    9. Java中解析XML的示例代码: 对于DOM解析,可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来创建和操作XML文档。对于SAX解析,可以实现`org.xml.sax.ContentHandler`接口并注册到`...

    xml解析整理

    4. Woodstox:轻量级的StAX(Streaming API for XML)解析库,适用于大文件和高性能需求。 XML解析的实际应用非常广泛,例如: 1. 数据交换:Web服务(如SOAP)通常使用XML作为数据交换格式。 2. 配置文件:许多...

    解析xml

    解析XML有两种主要方法:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析:DOM将整个XML文档加载到内存中,形成一个树形结构。每个节点代表XML文档的一个部分,可以很容易地通过遍历树来...

    替换dom4j中的xml解析

    以下是使用SAX和StAX解析XML的基本步骤: 1. **SAX解析**: - 创建`DefaultHandler`的子类并重写关键方法,如`startElement`,`endElement`和`characters`。 - 使用`SAXParserFactory`创建`SAXParser`实例。 - ...

    xml解析Demo以及相关jar包

    - **stax-api** 和 **woodstox-core**:用于StAX解析的库,Woodstox是StAX的高性能实现。 - **xercesImpl**:Apache Xerces是一个开源的XML解析器,提供了DOM、SAX和XSLT的实现。 - **xml-apis**:XML API接口,...

    XML 大文件 解析

    - 并行处理:利用多线程或分布式计算框架(如Hadoop)并行解析XML文件的不同部分。 另外,还可以考虑XML压缩格式,如GZIP或BZIP2,以减少文件大小,降低解析压力。解压缩后,可以使用专为压缩XML设计的库,如Apache...

Global site tag (gtag.js) - Google Analytics