`
shihuan830619
  • 浏览: 582105 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

利用commons-digester3-30.jar解析xml文件

阅读更多
此方式解析需要commons-beanutils-1.8.3.jar的支持

Person.java类:
import java.io.Serializable;

public class Person implements Serializable {

	public String id;
	public String name;
	public int age;
	
	public Person() {
		
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}

data.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<people>
	<person id="1" name="Shibo Yu" age="28" />

  	<person id="2" name="Shihuan" age="45" />

  	<person id="3" name="Old Ages" age="53" />
</people>

TestDigester1.java类:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.commons.digester3.Digester;
import org.apache.log4j.Logger;
import org.xml.sax.SAXException;

import com.commonsdigester.dto.Person;

public class TestDigester1 {

	static Logger logger = Logger.getLogger(TestDigester.class);
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Digester digester = new Digester();      
		//此方法作用是是否对XML文档进行DTD验证      
		digester.setValidating(false);    
		
		
		//addObjectCreate的作用是:当遇见people元素的时候,产生一个java.util.ArrayList对象      
		digester.addObjectCreate("people", "java.util.ArrayList");      
		//addSetProperties作用是:对people元素所含的属性赋值(即下面people/person中的对象值)      
		digester.addSetProperties("people");      
		//当遇见people/person元素的时候,产生一个com.commonsdigester.dto.Person对象      
		digester.addObjectCreate("people/person", "com.commonsdigester.dto.Person");      
		//对people/person元素所含的属性赋值给Person对象
		digester.addSetProperties("people/person");
		//当再一次遇见 people下的person元素的时候,调用ArrayList类的add()方法,add:com.commonsdigester.dto.Person对象              
		digester.addSetNext("people/person", "add", "com.commonsdigester.dto.Person");

		
		
		try {
			
			InputStream inputdata = new FileInputStream("D:\\Workspaces\\TestJavaStudy\\src\\com\\commonsdigester\\dto\\data.xml");
			List personList = (List) digester.parse(inputdata);
			for (int i = 0; i < personList.size(); i++) {
				Person person = (Person) personList.get(i);
				System.out.println(person.getId() + " -- " + person.getName() + " -- " + person.getAge());
			}
			
		} catch (IOException e) {
			logger.error("load People.xml error.", e);
		} catch (SAXException e) {
			logger.error("load People.xml error.", e);
		} 

		
	}

}


第二种xml格式的解析:
Person.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<people>
	<person id="1">
    	<name>Shibo Yu</name>
    	<age>28</age>
  	</person>
  	<person id="2">
    	<name>Shihuan</name>
    	<age>45</age>
  	</person>
  	<person id="3">
    	<name>Old Ages</name>
    	<age>53</age>
  	</person>
</people>

TestDigester2.java类:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.commons.digester3.Digester;
import org.apache.log4j.Logger;
import org.xml.sax.SAXException;

import com.commonsdigester.dto.Person;

public class TestDigester2 {

	static Logger logger = Logger.getLogger(TestDigester.class);
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Digester digester = new Digester();      
		//此方法作用是是否对XML文档进行DTD验证      
		digester.setValidating(false);    
		
		
		//addObjectCreate的作用是:当遇见people元素的时候,产生一个java.util.ArrayList对象      
		digester.addObjectCreate("people", "java.util.ArrayList");      
		//addSetProperties作用是:对people元素所含的属性赋值(即下面people/person中的对象值)      
		digester.addSetProperties("people");      
		//当遇见people/person元素的时候,产生一个com.commonsdigester.dto.Person对象      
		digester.addObjectCreate("people/person", "com.commonsdigester.dto.Person");      
		//对people/person元素所含的属性赋值给Person对象
		
		digester.addBeanPropertySetter("people/person/name");
		digester.addBeanPropertySetter("people/person/age");
		
		digester.addSetProperties("people/person");
		//当再一次遇见 people下的person元素的时候,调用ArrayList类的add()方法,add:com.commonsdigester.dto.Person对象              
		digester.addSetNext("people/person", "add", "com.commonsdigester.dto.Person");

		
		
		try {
			
			// 解析XML文档
			InputStream input = new FileInputStream("D:\\Workspaces\\TestJavaStudy\\src\\com\\commonsdigester\\dto\\Person.xml");
			List people = (List) digester.parse(input);
			for (int i = 0; i < people.size(); i++) {
				Person person = (Person) people.get(i);
				System.out.println(person.getId() + " -- " + person.getName() + " -- " + person.getAge());
			}

		} catch (IOException e) {
			logger.error("load People.xml error.", e);
		} catch (SAXException e) {
			logger.error("load People.xml error.", e);
		} 

		
	}

}


【注】第二种解析中关注digester.addBeanPropertySetter("people/person/name");
digester.addBeanPropertySetter("people/person/age");这两句。
addBeanPropertySetter方法还有其它参数形式,详情可参考官方API文档。
分享到:
评论

相关推荐

    commons-digester-2.1.jar

    `commons-digester-2.1.jar` 是Apache Commons项目中的一个组件,主要负责XML文档的解析和对象的创建与绑定。Apache Commons Digester库提供了一种规则驱动的方法来解析XML文档,并根据预定义的规则将XML数据映射到...

    commons-digester-1.7.jar.zip

    在标题和描述中提到的"commons-digester-1.7.jar.zip"是一个包含Apache Commons Digester 1.7版本的压缩文件,它包含了`commons-digester-1.7.jar`库本身以及相关的`commons-digester-1.7.jar.license.txt`文件,后...

    commons-digester.jar

    `commons-digester.jar`是Apache Commons项目中的一个组件,主要功能是解析XML文档并根据预定义的规则自动创建和填充Java对象。这个组件在Java应用程序中尤其有用,特别是那些需要从XML配置文件中构建复杂对象层次...

    commons-digester-2.0.jar.zip

    在实际开发中,Apache Commons Digester常用于配置文件的解析,比如Struts框架的配置文件,或者自定义XML配置的Java应用。它可以帮助开发者避免手动解析XML并创建/操作Java对象,提高代码的可读性和可维护性。 然而...

    commons-digester-2.0.rar源文件及jar文件

    《Apache Commons Digester 2.0:解析XML的利器》 Apache Commons Digester是一个Java库,主要用于将XML文档解析成Java对象。这个库的核心功能是根据预定义的规则(Rule)来读取XML文档,然后根据这些规则进行一...

    利用commons-digester解析xml

    标题“利用commons-digester解析XML”涉及到的是Java开发中的一种处理XML文档的工具——Apache Commons Digester。这个库提供了一种方便的方式来映射XML文档结构到Java对象,从而简化了XML数据的处理过程。 Apache ...

    commons-digester-2.1.jar.zip

    3. **Digest Process**:Digester解析XML文档的过程,按照规则集执行,将XML结构转化为Java对象。 ## 三、主要功能 1. **对象创建**:根据XML元素创建对应的Java对象。例如,每当解析到特定的XML标签时,可以创建...

    commons-digester-1.8.1-bin.tar.gz

    8. **集成与应用**:在实际项目中,开发人员可以利用 Digester 的强大功能,通过编写简单的Java代码定义XML到Java对象的映射,减少手动解析XML的复杂性,提高代码的可维护性和可读性。 9. **API使用**:了解如何...

    commons-digester.jar下载

    1. **配置文件解析**: Commons-Digester常用于解析XML配置文件,如Spring框架中的bean配置或Struts框架的配置。 2. **XML数据绑定**: 将XML数据映射到Java对象,简化数据处理。 3. **Web应用程序**: 在构建MVC...

    spring和hibernate__jar包,详细说明看jar包列表

    以下是jar包列表 activation-1.1.jar activiti-engine-5.10.jar activiti-spring-5.10.jar antlr-2.7.7.jar aopalliance-1.0.jar aopalliance.jar asm-3.1.jar aspectjrt.jar ...xml-apis-1.0.b2.jar

    commons-digester.jar commons-dbcp.jar

    首先,`commons-digester.jar`是Apache Commons Digester项目的一部分,它提供了一种规则驱动的XML解析机制。这个库允许开发者将XML文档解析为Java对象,这对于创建基于XML配置的应用程序特别有用。例如,如果你有一...

    commons-digester-2.0.jar

    digester必备的jar,XML解析专用

    quartz-1.6.0/commons-beanutils/commons-digester-1.7 JAR包

    Digester提供了一种从XML文档创建Java对象结构的方式,它可以根据预定义的规则集(RuleSet)自动解析XML,并调用相应的JavaBean方法,实现XML到Java对象的映射。这个库特别适用于那些XML配置文件需要转化为Java对象...

    commons-digester源码

    - 配置文件解析:例如,Web应用服务器如Tomcat就使用Digester来解析server.xml配置文件。 - 数据对象的自动构建:XML数据可以映射到相应的Java对象,简化数据处理。 6. **源码学习价值:** - 深入理解XML到Java...

    commons-digester-1.7.zip

    这个"commons-digester-1.7.zip"文件包含了Apache Commons Digester库的1.7版本,这是一个广泛用于处理XML到Java对象映射的开源组件。 在Java开发中,XML通常用于存储和传输数据,因为它具有结构化和可读性。然而,...

    commons.jar +commons-beanutils.jar

    3. **commons-digester-1.8.jar**:这个是Apache Commons Digester库,用于从XML文档中自动创建和配置Java对象,通过定义规则来解析XML并调用相应的JavaBean方法。 4. **commons-logging.jar** 和 **commons-...

    commons-beanutils-1.8.0-BETA.zip

    这个组件是Apache Commons Digester,它是用来解析XML并基于规则创建和配置Java对象的工具。它与BeanUtils配合使用,可以在XML配置文件中直接创建和初始化JavaBeans,进一步提升了Java应用的灵活性和可配置性。 ...

    ecside所需jar包

    整理的ecside所需jar包: avalon-framework-4.0.jar batik-1.5-fop-0.20-5.jar commons-beanutils-bean-collections.jar commons-beanutils-core.jar commons-beanutils.jar ... xml-apis-2.0.2.jar

    xml解析commons-digester的demo

    这个示例演示了如何使用Apache Commons Digester解析XML文件,将XML数据转换为Java对象。通过定义规则,我们可以轻松地处理复杂的XML结构,并将它们映射到Java对象模型中。这在处理大量配置数据或需要从XML文件加载...

Global site tag (gtag.js) - Google Analytics