将以下 XML 文件构造成 ArrayList;
<?xml version="1.0" encoding="ISO8859_1"?>
<beans>
<bean id="1111" name="abc"/>
<bean id="2222" name="bcd"/>
</beans>
MyBean 类
public class MyBean {
private String name=null;
private String id=null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
///测试类
public class DigesterTest {
ArrayList<MyBean> mylist=new ArrayList<MyBean>();
public DigesterTest(){
Digester digester=new Digester();
digester.push(mylist);
digester.addObjectCreate("beans/bean", MyBean.class);
digester.addSetProperties("beans/bean");
digester.addSetNext("beans/bean","add");
try {
digester.parse(new File(System.getProperty("user.dir"),"//src//bean.xml"));
for(MyBean bean:mylist){
System.out.println(bean.getId()+" "+bean.getName());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void RuleParse(){
Digester digester=new Digester();
digester.addRule("beans", new ListRule());
digester.addRule("beans/bean",new BeanRule());
try {
List<MyBean> list=(List<MyBean>)digester.parse(new File(System.getProperty("user.dir"),"//src//bean.xml"));
for(MyBean bean:list){
System.out.println(bean.getId()+" "+bean.getName());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void add(MyBean bean){
this.mylist.add(bean);
}
public static void main(String[] args){
DigesterTest t=new DigesterTest();
t.RuleParse();
}
}
2.2 Digester 的处理过程 (Rule, XPath, Object Stack)
首先为 Digester 指明处理规则, 每种处理规则都要匹配 XPath,如下:
digester.addObjectCreate("beans", ArrayList.class):
digester.addObjectCreate("beans/bean",MyBean.class);
digester.addSetProperties("list/bean");
digester.addSetNext("list/bean", "add");
注意:上述程序并不是处理 XML 文档,而且指明如何处理 XML 文档
然后,Digester 开始解析 XML 文档
digester.parse(xxx);
Digester 遍历整个 DOM 树, 当遇到一个元素时,便找到与该元素路径匹配的 Rule,并调用这个 Rule 来处理该元素。
Rule 使用 Digester 的 Object Stack 来使用或存放中间处理过程产生的对象。当整棵数遍历完毕时,Object Stack
栈底的对象即为最后结果对象。
2.3 使用 Digester 内建的规则
ObjectCreate
SetNext
SetProperties
SetProperty
CallMethod
FactoryCreate
2.4 使用自定义的规则
对于第一个例子,不使用内建的规则,而使用自定的规则处理,用于演示自定义规则的用法
public class ListRule extends Rule {
@Override
public void begin(String namespace, String name, Attributes attributes)
throws Exception {
// TODO Auto-generated method stub
digester.push(new ArrayList());
}
}
public class BeanRule extends Rule {
@Override
public void begin(String namespace, String name, Attributes attributes)
throws Exception {
// TODO Auto-generated method stub
List list=(List)digester.peek();
MyBean bean=new MyBean();
bean.setId(attributes.getValue("id"));
bean.setName(attributes.getValue("name"));
list.add(bean);
}
}
分享到:
相关推荐
在本案例中,我们将深入探讨`digester`的用法,以及如何通过它来实现XML到Java对象的映射。 首先,我们需要了解XML解析的基本概念。XML(eXtensible Markup Language)是一种用于标记数据的语言,常用于存储和传输...
Digester是Apache软件基金会下的Jakarta项目中的一个Java库,主要用于简化XML到Java对象的映射过程。在处理XML文档时,它通过匹配XML元素结构到相应的Java对象的方法调用,实现了XML解析的自动化。这个工具对于那些...
Castor和Digester是两个在Java开发中用于对象与XML数据之间进行映射的库,它们简化了XML数据的解析和对象的序列化过程。在本文中,我们将深入探讨这两个库,以及如何通过实例来使用它们。 首先,让我们了解Castor。...
Java中的Digester库是Apache Commons项目的一部分,它提供了一种方便的方式来解析XML文档,并将解析结果映射到Java对象模型上。这个库特别适合于创建简单的XML到Java对象的映射,而不需要编写大量的手动解析代码。在...
赠送jar包:commons-digester3-3.2.jar; 赠送原API文档:commons-digester3-3.2-javadoc.jar; 赠送源代码:commons-digester3-3.2-sources.jar; 赠送Maven依赖信息文件:commons-digester3-3.2.pom; 包含翻译后...
`commons-digester.jar`是Apache Commons项目中的一个组件,主要功能是解析XML文档并根据预定义的规则自动创建和填充Java对象。这个组件在Java应用程序中尤其有用,特别是那些需要从XML配置文件中构建复杂对象层次...
《digester深度解析》 Java世界中,XML作为数据交换和配置文件的常用格式,其解析和对象绑定是一项常见的任务。Apache Commons Digester是Apache软件基金会提供的一个强大的工具,专门用于将XML文档解析为Java对象...
`commons-digester-2.1.jar` 是Apache Commons项目中的一个组件,主要负责XML文档的解析和对象的创建与绑定。Apache Commons Digester库提供了一种规则驱动的方法来解析XML文档,并根据预定义的规则将XML数据映射到...
标题“利用commons-digester解析XML”涉及到的是Java开发中的一种处理XML文档的工具——Apache Commons Digester。这个库提供了一种方便的方式来映射XML文档结构到Java对象,从而简化了XML数据的处理过程。 Apache ...
《使用Digester解析XML的深度指南》 在Java开发中,处理XML文件是常见的任务,而Apache Commons Digester库提供了一种高效且便捷的方式来解析XML并将其映射到Java对象。本教程将深入探讨如何使用Digester来读取XML...
在Java开发中,Apache Commons Digester是一个非常有用的库,它允许开发者通过XML配置来实例化、配置和关联Java对象。 Digester提供了两种主要的解析方式,即规则硬编码和独立的规则文件,这两种方法各有其特点和...
### Digester组件简化XML文件处理操作 #### 一、引言 随着Web技术的发展,XML作为数据交换格式的重要性日益凸显。然而,对于大型且复杂的XML文档进行解析与处理时,传统的方法如DOM(Document Object Model)和SAX...
本文将深入探讨如何使用Apache的 Digester 库来解析XML文档,这是一款强大的工具,能够将XML数据映射到Java对象,简化了处理XML的过程。 Digester 是Apache Commons项目的一部分,它提供了一种规则驱动的方法来处理...
《digester3.2源码解析与应用实例》 Apache Digester是一个强大的Java库,用于在XML文档和Java对象之间建立映射关系,通过规则来自动解析XML并创建或更新对象结构。在digester3.2版本中,我们能够深入理解其内部...
赠送jar包:commons-digester3-3.2.jar; 赠送原API文档:commons-digester3-3.2-javadoc.jar; 赠送源代码:commons-digester3-3.2-sources.jar; 赠送Maven依赖信息文件:commons-digester3-3.2.pom; 包含翻译后...
### 使用Apache Commons Digester开发指南 #### 概述 Apache Commons Digester 是一款基于 Java 的开源库,专门用于简化 XML 文件解析的过程。它利用 SAX(Simple API for XML)解析器来解析 XML 数据,并通过一...
在Java开发中,Struts框架提供了一个强大的工具——Digester,用于解析XML文件并自动创建、配置Java对象。本文将详细介绍如何使用Digester处理具有嵌套结构的XML文档,并通过一个具体的实例——"DigesterXmlTest"来...
Digester 是 Apache Commons 中的一个工具类库,它用于解析 XML 文档,并根据预先定义的规则自动创建和配置 Java 对象。在上述问题中,我们看到一个 XML 文档表示了一个考试,其中包含了多个题目,每个题目有其编号...
Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用...