`

dom4j处理xml文件-saxreader与elementhandler的配合

    博客分类:
  • abc
 
阅读更多

接触到公司前辈写的有关于dom4j处理xml的代码

 

下面记录了这次自己学习测试的一小段简单实例

test1.xml

<?xml version="1.0" encoding="GB2312"?>  
<ydyf>
	<book>9901</book>
	<tuser>
		<user_autoid>9902562</user_autoid>
		<u_oid>9902179</u_oid>
		<u_ucid>151</u_ucid>
	</tuser>
	<torganization>
		<org_id>99021</org_id>
		<oname>****保健院</oname>
		<upoid>1</upoid>
	</torganization>
</ydyf>

 下面我们用到SAXReader的方式解析这个xml文件,解析大文件xml文件时,主要采用的方式就是sax方式。

    MyHandlerTest.java

 

package com.fzzy.test;

import java.io.InputStream;

import org.dom4j.ElementHandler;
import org.dom4j.io.SAXReader;

public class MyHandlerTest {
	
	SAXReader reader;
	public void test()
	{
		try
		{
			InputStream in=MyHandlerTest.class.getResourceAsStream("test1.xml");
			ElementHandler manElementHandler=(ElementHandler) new TableElementHandler();
			reader=new SAXReader();
			reader.addHandler("/ydyf/book", manElementHandler);
			reader.addHandler("/ydyf/tuser", manElementHandler);
			reader.addHandler("/ydyf/torganization", manElementHandler);
			reader.read(in);
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
	}
	public static void main(String[] args)
	{
		new MyHandlerTest().test();
	}
}

    TableElementHandler.java

package com.fzzy.test;

import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;

import org.dom4j.Element;
import org.dom4j.ElementHandler;
import org.dom4j.ElementPath;

public class TableElementHandler implements ElementHandler {

	@Override
	public void onEnd(ElementPath arg0) {
		Element row = arg0.getCurrent();
		String table = arg0.getPath().substring(6);//获得表名
		try 
		{
			if(table.equals("book"))
			{
				lsbook(row);
			}
			else if(table.equals("tuser"))
			{
				lstuser(row);
			}
			else if(table.equals("torganization"))
			{
				lstorganization(row);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		
	}

	@Override
	public void onStart(ElementPath arg0) {	}
	public	void lsbook(Element root) throws SQLException, ParseException
	{
		System.out.println("lsbook------------");
		System.out.println(root.getQName().getName()+":"+root.getText());
		
	}
	
	public	void lstuser(Element root) throws SQLException, ParseException
	{
		System.out.println("lsbook------------");
		List<Element> list=root.elements();
		for(Element e:list)
		{
			System.out.println(e.getQName().getName()+":"+e.getText());
		}
	}
	
	public	void lstorganization(Element root) throws SQLException, ParseException
	{
		System.out.println("lsbook------------");
		List<Element> list=root.elements();
		for(Element e:list)
		{
			System.out.println(e.getText());
		}
	}
}

 

得到的结果:

lsbook------------
book:9901
lsbook------------
user_autoid:9902562
u_oid:9902179
u_ucid:151
lsbook------------
99021
****保健院
1

 

 

 

好啦,自己动手学习且写了一遍,理解的就更深刻了......

0
1
分享到:
评论
1 楼 pingrui1234 2013-01-13  
大哥貌似不行啊

相关推荐

    dom4j基于事件流解析大XML的文件 示例

    2. **性能**:DOM4J不仅支持DOM解析,还支持SAX和STAX解析,后者在处理大型XML文件时能有效减少内存占用。 3. **内存效率**:SAX解析器采用事件驱动模型,只在需要时处理XML元素,避免了内存不足的问题。 4. **易用...

    dom4j Api文档 dom4j-1.6.1 api文档

    DOM4J还支持其他高级特性,如命名空间处理、事件驱动的处理模型(DOM4J还提供了基于事件的`EventReader`)以及与其他XML技术(如JAXB和XSLT)的集成。此外,DOM4J的性能经过优化,对大型XML文档的处理也十分高效。 ...

    dom4j读取大文件的缓存方式

    DOM4J是一个强大的Java库,专门用于处理XML文档。在处理大文件时,直接使用DOM解析方式可能会导致内存溢出,因为DOM会一次性加载整个XML文档到内存中。为了解决这个问题,DOM4J提供了流式(SAX)和事件驱动...

    dom4j简单技术

    ### DOM4J:简化XML处理的艺术 #### 概念与定义 DOM4J是一个功能强大且易于使用的开源库,专为在Java平台上处理XML、XPath和XSLT设计。它利用Java集合框架,并全面支持DOM(Document Object Model)、SAX(Simple ...

    Dom4j的使用(全而好的文章)

    3. **全面支持**:Dom4j支持DOM、SAX和JAXP等多种XML处理方式,同时兼容Java集合框架,便于与其他Java组件集成。 4. **灵活的接口**:通过大量的接口定义,Dom4j允许开发者更灵活地操作XML数据。 #### 三、Dom4j的...

    DOM4J 的使用

    DOM4J 提供了两种方式来读取 XML 文档:DOMReader 和 SAXReader。它们的调用方式是一样的。 * 读取 XML 文档: 可以使用 SAXReader 来读取 XML 文档。下面是一个示例代码: ```java public static Document load...

    dom4j文档.xml

    DOM4J 是一个强大的Java库,专门用于处理XML文档。它提供了丰富的API,使得XML的解析、创建、修改和查询变得简单易行。DOM4J的设计理念是基于Java集合框架,这意味着它可以无缝地融入到Java应用程序中,支持DOM、SAX...

    Dom4j 解析XML

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了高效的解析、操作和生成XML内容的方法。相较于DOM、SAX和JAXP等其他解析技术,DOM4J以其出色的性能、丰富的功能和用户友好的API脱颖而出。DOM4J不仅支持DOM...

    dom4j详细使用用法

    - **`org.dom4j.ElementHandler`**:用于处理特定元素的对象。 - **`org.dom4j.ElementPath`**:用于获取当前处理的元素路径信息,对于解析复杂的XML结构特别有用。 - **`org.dom4j.Entity`**:表示XML实体。 - **`...

    dom4j基础入门文档(SAX,DOM,XPATH)

    【dom4j基础入门文档(SAX,DOM,XPATH)】 dom4j是一个流行的Java库,专门用于处理XML文档...在实际开发中,根据项目需求选择合适的解析器(DOMReader或SAXReader),结合dom4j提供的接口,可以实现高效便捷的XML处理。

    dom4j例子与简介

    ### DOM4j:高效、灵活的XML处理框架 DOM4j是一个开源的Java库,用于处理XML文档。它提供了一套简洁且强大的API,使得开发者能够轻松地读取、创建和修改XML数据。DOM4j的设计哲学是尽可能接近XML本身,从而让开发者...

    DOM4J_xpath

    ### DOM4J与XPath详解 #### 一、DOM4J简介 **DOM4J**是一款由dom4j.org开发的开源XML解析库,专为Java平台设计,它不仅支持DOM和SAX这两种标准的XML解析方式,还兼容JAXP(Java API for XML Processing)。DOM4J以...

    java_Dom4j解析XML详解.pdf

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML解析、创建、修改变得相对简单。DOM4J的核心特点包括对DOM、SAX和JAXP的支持,以及与Java集合框架的良好集成。下面将详细阐述DOM4J...

    dom4j教程.pdf

    - **性能优越**:DOM4J在多个性能测试中表现突出,尤其是在处理大型XML文件时效率更高。 - **灵活性**:相比其他XML解析库(如JDOM),DOM4J提供了更丰富的接口,使得开发者可以根据实际需求选择最适合的API。 - **...

    java_Dom4j解析XML详解.doc

    虽然两者都属于`org.dom4j.io`包,但实际开发中更多使用`SAXReader`,因为它效率更高,尤其是在处理大文件时更为突出。 ```java public static Document load(String filename) { Document document = null; try ...

    DOM4J 使用起來非常簡單

    DOM4J是一个强大的开源XML解析库,由dom4j.org开发并维护,它适用于Java平台,支持DOM、SAX和JAXP。DOM4J以其简单易用的特性深受开发者欢迎,尤其对于熟悉XML-DOM模型的人来说,可以快速上手。尽管DOM4J自带的官方...

    DOM4J使用详解

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了一种灵活且高效的方式来解析、创建、修改和操作XML文档。DOM4J不仅支持DOM模型,还支持SAX和JAXP解析器,使得开发者可以根据需要选择不同的解析策略。 1. ...

    dom4j教程,详细文档

    DOM4J的设计充分考虑了Java集合框架的支持,并且与DOM、SAX以及JAXP等标准兼容,这使得它在XML解析领域具有极高的灵活性和易用性。 **特点:** - **丰富的接口**: DOM4J提供了一系列丰富的接口,这些接口设计得既...

    dom4j-1.6.1

    **DOM4J 1.6.1:Java XML处理库** DOM4J是Java社区中一个流行的开源XML处理库,其版本1.6.1在2005年发布,为开发者提供了强大的XML解析、操作和文档生成能力。这个库不仅支持DOM(文档对象模型)和SAX(简单API用于...

    dom4j_API_示例

    1. **高性能:**DOM4J在处理XML文件时表现出色,特别是在大数据量处理和复杂文档结构处理方面。 2. **功能全面:**DOM4J不仅支持基本的XML解析和创建,还提供了强大的XPath查询功能,便于开发者检索和操作XML文档中...

Global site tag (gtag.js) - Google Analytics