关于使用Common Digester处理xml文件

xml

现在很多软件使用xml作为配置文件,但处理起来还是非常麻烦,在Jakarta Project 工程中,有一个Common Digester包可以帮助我们处理xml类型的配置文件。

除了读取xml配置文件外,这个软件也非常适合用于将xml转为JavaBean。
假定xml文件如下:
<foo name="The Parent">
<bar id="123" title="The First Child"/>
<bar id="456" title="The Second Child"/>
</foo>

对应的JavaBean类定义如下:

public class Bar {
private int id;
private String title;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
public class Foo {
private String name;
private Vector bars = new Vector();
public void addBar(Bar bar) {
bars.add(bar);
}
public Bar findBar(int id) {
Iterator iterator = bars.iterator();
if(iterator.hasNext()){
Bar bar = (Bar)iterator.next();
if(bar.getId() == id){
return bar;
}
}
return null;
}
public Iterator getBars() {
return bars.iterator();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

在后面处理中,只需要简单处理,即可将xml描述的对象转换为JavaBean对象。
Digester digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate(foo, mypackage.Foo);
digester.addSetProperties(foo);
digester.addObjectCreate(foo/bar, mypackage.Bar);
digester.addSetProperties(foo/bar);
digester.addSetNext(foo/bar, addBar, mypackage.Bar);
try {
Foo foo = (Foo) digester.parse(D:/java/eclipse/workspace/Digester/src/mypackage/utils/Bar.xml);
System.out.println(foo);
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
在SenTom网站上,有一篇详细的介绍文档。
第七期-Jakarta Commons Digester

时间: 2024-11-03 23:07:00

关于使用Common Digester处理xml文件的相关文章

一键解析XML文件(利用Digester实现可配置)

大部分程序员,平时工作中除了与Bug相伴之外,想必也会很多种多样的文件打交道吧.当然,XML 就是其中之一,获取交互数据,创建规则等等,都离不开他.XML是个非常强大的描述语言,相比而言,txt之流则功力较弱了些.      XML那么重要,单解析XML的工作却繁杂无聊.原因如下:解析XML工具繁杂,每个人掌握的东西不一样;学习新工具又浪费时间;解析规则只是个体力活.     程序员的辛苦,也就体现于此了.一般程序员总是抱怨忙啊忙,累啊累.我们作为程序员来说,更应该想一想想法设法吧东西提炼一下,

使用Digester解析XML文档示例

xml|示例 一. 概述 解析XML文档方面有不少的方法,也有不少的工具包可用,这里介绍的是来自Apache Jakarta的Digester,使用其解析XML文件非常方便而不需要过多的关心底层的具体解析过程. Digester最早出现在Struts中,后来随着Struts的发展以及其的公用性而被提到commens中独自立项,其底层实现的是SAX解析.当前版本为:1.5 二. 正文 1. 安装与配置 使用Digester需要如下几个软件包: Digester ,BeanUtils, Collec

在JSP开发中使用jdom解析临时存放数据的XML文件

dom|js|xml|数据     在我工作过程中,遇到了对临时存储产品信息的XML文件进行操作的问题.其中就有对XML文件的解析操作,考虑到用DOM或SAX比较麻烦,于是我选择了用jdom进行解析.因为我的XML文件结构比较简单,仅有两层,而且没有复杂的属性,所以没有用到里面太多的方法,只希望能够抛砖引玉,给初学者一点帮助.     下面我就把大概的实现过程说一说.     一.实现解析xml文件的JavaBean(XMLBean):     我把对存放产品信息的xml文档的全部操作都写在了X

搜集整理的对xml文件操作的java程序,基本可以满足基本的操作。

xml|程序 包括生成xml文件,增加删除修改节点,增加修改属性等等.现把我的程序共享,还有我的测试例子,看看大家有什么更好的建议.其中用到了jdom.jar 和xerces-1.2.2.jar ,都是标准的xml解析包.可以从网上下载. /** * $RCSfile: XMLProperty.java,v $ * $Revision: 1.3 $ * $Date: 2002/04/02 21:17:09 $ * * Copyright (C) 1999-2001 CoolServlets, I

Digester解析XML文档Sample

xml 解析XML文档 Digester的使用相当简单,请参看如下的SampleDigester类中的注释,这里不再拗述: /*============================================================ * Copyright:www.skyinn.org (c) 2002 - 2003 All rights reserved. * File:org.skyinn.quasar.config.SampleDigester * Inculde:Samp

xml文件正确性验证类实现

很多时候我们的应用程序或者web程序需要用到xml文件进行配置,而最终的程序是需要给客户使用的,所以xml或者也需要客户来写,而客户来写的话的,就不能保证xml文件绝对的正确,于是我写了这个类,主要功能就是验证xml书写文件是否符合定义的xsd规范. package common.xml.validator; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.i

PHP中xajax库中文问题及提示返回XML文件无效的解决办法

xajax是PHP下一个非常好的ajax框架,虽然xajax自己说自己是一个库(Library),但是我觉得它更像一个框架(Framework).xajax是一个开源的 PHP 类库 它能够让你黏合HTML.CSS.Javascript和PHP,并可以结合Smarty模板系统使用. 在运用Xoops的Page模组的时候,发现其不能和中文正常工作,特别是不能和UTF-8编码的页面一起工作,昨天在利用这个实现DataGrid的时候发现完全不能正常工作了,一直报"the XML response th

web.xml引用外部xml文件。以及org.xml.sax.SAXException

很多时候因为各种各样的原因,需要在各种xml文件来引用外部的xml文件. 我遇到了两种,一种是普通配置的xml文件引用外部xml文件. 可以用 <import resource="classpath:tuloginContext.xml" /> 这是相对路径,当然,这句代码的位置需要注意.这个在beans下面,与bean平级,如果写错了,会不执行,就会导入出错,或者就是不执行也不报错. <beans> <import resource="clas

Tomcat源码分析——server.xml文件的解析

前言 在<Tomcat源码分析--server.xml文件的加载>一文中我们介绍了server.xml的加载,本文基于Tomcat7.0的Java源码,接着对server.xml文件是如何解析的进行分析. 概要 规则 Tomcat将server.xml文件中的所有元素上的属性都抽象为Rule,以Server元素为例,在内存中对应Server实例,Server实例的属性值就来自于Server元素的属性值.通过对规则(Rule)的应用,最终改变Server实例的属性值. Rule是一个抽象类,其中