`
igogogo9
  • 浏览: 250757 次
  • 性别: Icon_minigender_1
  • 来自: 海口市
社区版块
存档分类
最新评论

使用Jakarta-commons-Digester解析xml文件

阅读更多
一:说明
Digester是jakarta commons里面的一个包,最早运用于Struts中xml文件的解析.后来独立出来
归到commons下面.主要的开发人员是:Craig McClanahan。Craig McClanahan是我比较崇拜的开发
人员之一。他开发了无数的OpenSource项目。包括大家都知道的Tomcat、Struts同时还是jsp,servlet
Spec制定成员之一,并是Java Server Face(jsf)的Team Leader.在此向Craig McClanahan致敬。
Digester把xml文件解析为Java Object有点象Castor。在本文中我使用一个简单的例子来介绍
Digester的使用,详细的文档看下面的连接:http://jakarta.apache.org/commons/digester.html
我做一个最简单的例子,因为Digester功能比较强大,需要更详细的例子参阅下面的文章
http://www.onjava.com/pub/a/onjava/2002/10/23/digester.html?page=1
http://www.javaworld.com/javaworld/jw-10-2002/jw-1025-opensourceprofile.html
使用Digester,需要jakarta下的如下包: BeanUtils, Collections, Logging.
Digester的下载地址:
http://apache.linuxforum.net/dist/jakarta/commons/digester/binaries/
目前版本为1.4

二:开始使用Digester.
现在有一个如下的xml文件
user.xml(e:/user.xml)
-------
<users>
<name>BASIC</name>
<pass>Example Basic Authentication Area</pass>
</users>

一个如下的java Object
com.henry.test.digester.BaseObject
-----------------------------------
public class BaseObject {
private String name = "";
private String pass = "";
/**
* Returns the name.
* @return String
*/
public String getName() {
return name;
}

/**
* Returns the pass.
* @return String
*/
public String getPass() {
return pass;
}

/**
* Sets the name.
* @param name The name to set
*/
public void setName(String name) {
this.name = name;
}

/**
* Sets the pass.
* @param pass The pass to set
*/
public void setPass(String pass) {
this.pass = pass;
}

public void setInfo(String name,String pass){
this.name = name;
this.pass = pass;

}

public void info() {
log("name:" + name + "...pass :" + pass);
}

private void log(String str) {
System.out.println(str);
}
}
现在我们要把user.xml里面的内容解析为一个BaseObject.
在以前我使用JDOM做解析。代码估计需要100行左右。
现在我使用Digester完成此项工作,你会发现非常的容易,而且很简单。

三:解析xml文件
Test.java
---------------
//import org.apache.commons.digester.Digester;
...............

public void parse() {
Digester digester = new Digester();
//创建Digester对象
BaseObject obj = new BaseObject();
try {
digester.addObjectCreate("users", "com.henry.test.digester.BaseObject");
//创建一个对象com.henry.test.digester.BaseObject
//对象对应的xml中为容users下的配置
digester.addCallMethod("users/name", "setName", 0);
//调用对象的方法setName并把users/name节点的值作为对象方法的参数
digester.addCallMethod("users/pass", "setPass", 0);
/*下面是调用setInfo(String,String)设置信息的使用
*digester.addObjectCreate("users", "com.henry.test.digester.BaseObject");
*digester.addCallMethod("users","setInfo",2);
*digester.addCallParam("users/name",0);
*digester.addCallParam("users/pass",1);
*/
//上面的两段代码功能一样都是使用反射实现对象的创建和方法的调用
//第二段是一个方法有多个参数的情况
obj=(BaseObject)(digester.parse("e:/user.xml"));
obj.info();
} catch (Exception ex) {
log(ex.getMessage());
}
}
............

上面的如此简单的代码就可以实现一个配置文件的解析。不错吧。

四:结束语
xml解析的方式有很多种,简单的运用jdom就可以解决问题.再不行使用Xerces等等。但对于一些
配置文件的解析使用Digester不失为一个很好的选择.简单,而且基本可以满足需要。够用为原则.
我没有去比较使用Digester,jdom的运行效率,因为实在是没有必要。但我使用过jdom去解析,虽然
很简单,但肯定比Digester复杂.
分享到:
评论

相关推荐

    Jakarta-Common-Digester使用笔记

    我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用堆栈来保存xml节点(stack.push()方法),当该xml节点中嵌套的所有子节点解析完毕,该节点将被弹出...

    比较全面的:Jakarta-commons jar包(附: chm参考手册 & 资源简介)

    commons-digester XML 文件到 Java 对象的映射机制 commons-discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。 commons-el 提供在JSP2.0规范中定义的EL表达式的解释器. ...

    jakarta-commons.zip

    5. ** Digester**: Digester模块允许开发者定义规则来自动构建对象图,通过XML文档解析。这在处理XML配置文件时非常有用,可以减少手动创建和配置对象的工作量。 6. **FileUpload**: 这个组件支持处理HTTP多部分...

    jakarta-commons的jar包

    Jakarta Commons是Apache软件基金会的一个项目集合,它提供了一系列实用工具类和组件,极大地丰富了Java开发者在构建应用程序时的工具箱。这个jar包在J2EE(Java 2 Platform, Enterprise Edition)开发中尤其常见,...

    使用Digester解析XML文档示例

    4. **解析XML文件**:使用Digester解析XML文件,并根据定义的规则创建Java对象。 #### 五、总结 通过上述介绍可以看出,Digester是一个非常有用的工具,它可以大大简化XML解析的过程。在实际开发中,尤其是处理...

    Jakarta Commons

    Digester 是一个XML解析器,它可以将XML文档映射到Java对象实例化和配置的过程。通过定义规则,可以自动创建和配置对象,减少了手动解析XML的复杂性。 4. **FileUpload**: 当需要处理HTTP请求中的多部分文件上传...

    apache-commons源码及jar文件

    Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件. Discovery Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。. EL Commons-EL 提供在...

    Jakarta commons docs API CHM 格式

    commons-digester XML 文件到 Java 对象的映射机制 commons-discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。 commons-el 提供在JSP2.0规范中定义的EL表达式的解释器. ...

    Jakarta Commons使用

    除了上述组件外,Jakarta Commons 还包括 BeanUtils、Codec、 Digester 等,它们提供了诸如对象属性映射、编码解码、XML 解析等功能,大大简化了 Java 开发中的常见任务。 通过了解和使用 Jakarta Commons,开发者...

    jakarta-struts-1.2.4

    6. **commons-digester**: 用于解析XML配置文件的库。 7. **commons-fileupload**: 处理HTTP文件上传功能的库。 8. **commons-collections**: Java集合框架的扩展,提供了更多的数据结构和算法。 9. **javax.servlet...

    jakarta commons cookbook 电子版

    《Jakarta Commons Cookbook》是Java开发领域中一本非常实用的指南,主要涵盖了Apache Jakarta Commons组件的使用技巧和最佳实践。这本书旨在帮助开发者更好地理解和利用Jakarta Commons库中的各种工具类和模块,...

    JAKARTA COMMONS

    12. **Commons Digester**: 使用 XML 配置文件映射到 Java 对象,简化 XML 解析和对象创建过程。 13. **Commons Discovery**: 提供工具定位资源,通过模式匹配服务/引用名称和资源名称。 14. **Commons EL**: 提供...

    lucene3.3的全部jar包

    lucene3.3的全部jar包ant-1.7.1.jar ant-junit-1.7.1.jar commons-beanutils-1.7.0.jar ...lucene-xml-query-parser-3.3.0.jar maven-ant-tasks-2.1.1.jar xercesImpl-2.9.1-patched-XERCESJ-1257.jar

    学生选课系统中所用的60个jar包

    collections-2.1.1.jar commons-dbcp.jar commons-digester.jar commons-fileupload.jar commons-httpclient.jar commons-lang.jar commons-logging.jar commons-pool.jar commons-validator.jar cos.jar db-ojb-...

    Jakarta Commons Online Bookshelf

    4. **XML解析与Digester**:介绍Digester组件,用于解析XML文档并构建Java对象模型。 5. **JXPath与Betwixt**:深入研究JXPath,一种强大的XPath表达式引擎,以及Betwixt,用于Java对象与XML之间的转换。 6. **数据...

    JasperReport Struts2 整合所需完整jar

    JasperReport Struts2 web 整合所需完整jar ant-1.7.1.jar antlr-2.7.5.jar asm.jar bsh-2.0b4.jar cglib-2.1.jar commons-beanutils-1.7.0.jar commons-beanutils-1.7.jar ...xml-apis.jar xwork-2.0.4.jar

    介绍Jakarta Commons的烹饪书

    6. **Digester组件**:用于XML到Java对象的映射,通常在配置文件解析或对象创建时使用,简化了XML处理流程。 7. **CLI(Command Line Interface)**:提供了一种方便的方式来处理命令行参数,使命令行应用程序更加...

    struts用法总结

    - commons-digester.jar:解析XML文件。 - commons-fileupload.jar:支持文件上传功能。 - commons-logging.jar:日志输出,如Log4j。 - commons-validator.jar:进行表单数据验证。 - servlet.jar:Servlet ...

    32款java编程所需JAR包.zip

    这是java 编程所有的JAR包集 如果你是开发java的 这些工具 是必须的 ...1.2.8.jar mssqlserver2.jar spring.jar spring-mock.jar standard.jar struts.jar strutstest-2.1.0.jar xerces-2.6.2.jar xml-apis.jar

Global site tag (gtag.js) - Google Analytics