首页 >> 读书频道 >> 电脑 >> Jakarta Common Digester 应用
 
· JAVA实例:学会数字签
· Java学习:线程池的简
· Java学习:一个基础的
· 休闲程序空间:趣说jav
· Java高级学习:Jav
· 面向对象编程:Java中
· Java新手学习:IIS
· Java学习:再探弥补j
· java学习:Visua
· 使用Resin在NT环境
· 选择java的理由:ja
· Java繁体中文处理完全
 
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
· 2006高考录取规则
· 首批中国世界名牌产品和2
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

Jakarta Common Digester 应用


查看有无更新版本

关键字:JAVA 2006-8-31

 

1 什么是 Common Digester
Jakarta Common Digester 是一套 XML to Object 的 API,它可以将XML文件转换为任意的Java对象,并且提供灵活的扩展接口。
2 原理
2.1 简单的例子
将以下 XML 文件构造成 ArrayList;
<?xml version="1.0" encoding="ISO8859_1"?>
<list>
<bean id="1111" description="abc"/>
<bean id="2222" description="bcd"/>
</list>
Bean 类
public class Bean
{
private String id;
private String description;
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;

}
public void setDescription(String description)
{
this.description = description;
}
public String getDescription()
{
return description;
}
}
Digester digester = new Digester();
digester.addObjectCreate("list", ArrayList.class):
digester.addObjectCreate("list/bean" Bean.class);
digester.addSetProperties("list/bean");
digester.addSetNext("list/bean", "add");
/*TODO: Load xml file as stream*/
InputStream is = null;
ArrayList list = (ArrayList) digester.parse(is);
2.2 Digester 的处理过程 (Rule, XPath, Object Stack)
首先为 Digester 指明处理规则, 每种处理规则都要匹配 XPath,如下:
digester.addObjectCreate("list", ArrayList.class):
digester.addObjectCreate("list/bean" Bean.class);
digester.addSetProperties("list/bean");
digester.addSetNext("list/bean", "add");
注意:上述程序并不是处理 XML 文档,而且指明如何处理 XML 文档

然后,Digester 开始解析 XML 文档
digester.parse(is);
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
{
public void begin(String namespace, String name, Attributes attributes) throws Exception
{
/*将一个新的 ArrayList 对象放入 Object Stack 中*/

digester.push(new ArrayList());
}
}
public class BeanRule
extends Rule
{
public void begin(String namespace, String name, Attributes attributes) throws Exception
{
/*取出栈顶的对象,当处理该规则时,栈顶应该是 ArrayList*/
ArrayList list = (ArrayList) digester.peek();
Bean bean = new Bean();
bean.setId(attributes.getValue("id"));
bean.setDescription(attributes.getValue("description"));
list.add(bean);
}
}
Digester digester = new Digester();
digester.addRule("list", new ListRule()):
digester.addRule("list/bean" new BeanRule());
/*TODO: Load xml file as stream*/
InputStream is = null;
ArrayList list = (ArrayList) digester.parse(is);

Jakarta Common Digester 应用

[ 1 ]
Jakarta Common Digester 应用 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑