1 什么是 Common Digester
Jakarta Common Digester 是一套 XML to Object 的 API,它可以将XML文件转换
为任意的Java对象,并且提供灵活的扩展接口。
2 原理
2.1 简单的例子
将以下 XML 文件构造成 ArrayList;
<?xml version="1.0" encoding="ISO8859_1"?>
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);
分享到:
相关推荐
Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用...
Jakarta Common Logging(JCL)是Java开发中的一个标准日志接口,由Apache软件基金会的Jakarta项目开发。它提供了一种统一的方式来管理和记录应用程序的日志信息,允许开发者选择自己喜欢的日志实现,如Log4j、Java ...
是一个样板项目,可帮助您在几秒钟内引导新的Java EE 8 / Jakarta EE 8应用程序。 如果要探索基于JSF,JAX-RS和MVC的真实世界的Jakarta EE 8应用程序,请检查从该项目派生的以下项目。建立确保已安装最新的JDK 8和...
Jakarta Common Email 是 Apache 软件基金会下的一个开源项目,它为 Java 应用程序提供了一套全面的 API,使得发送、接收和处理电子邮件变得简单易行。在本文中,我们将深入探讨 Jakarta Common Email 的核心概念、...
网上找不全,官网资源又太分散,自己动手,丰衣足食,这是我挨个下载的Apache jakarta commons,有windows与linux两版本(全都有源码),甚至分离出去的HttpClient都在其中,愿更多的人了解并使用Apache,这是一个...
Digester是Apache软件基金会下的Jakarta项目中的一个Java库,主要用于简化XML到Java对象的映射过程。在处理XML文档时,它通过匹配XML元素结构到相应的Java对象的方法调用,实现了XML解析的自动化。这个工具对于那些...
Apache Jakarta Common Email 是一个强大的Java库,用于创建和发送电子邮件。这个库提供了丰富的功能,使得在Java应用程序中处理电子邮件变得更加简单。在这个项目中,我们将深入探讨如何使用Common Email库来发送...
Digester是Apache软件基金会的Jakarta项目中的一个实用工具库,它主要用来解析XML文档,并根据预定义的规则自动创建和配置Java对象。这个工具在处理XML到Java对象映射时,极大地简化了代码,避免了手动解析XML的繁琐...
修改部分了源代码,可以无缝适配Jakarta,可以在Tomcat10或JAVAEE9以上使用,其参照版本为commons-fileupload-1.4
除了上述组件外,Jakarta Commons 还包括 BeanUtils、Codec、 Digester 等,它们提供了诸如对象属性映射、编码解码、XML 解析等功能,大大简化了 Java 开发中的常见任务。 通过了解和使用 Jakarta Commons,开发者...
Jakarta Struts 1.1 是一个历史悠久的Java Web应用程序框架,由Apache软件基金会的Jakarta项目开发。这个框架在2000年代初期非常流行,它为构建MVC(模型-视图-控制器)架构的Web应用提供了一个强大而灵活的基础。在...
7. **Digester组件**:用于将XML文档映射到Java对象,使得XML配置文件可以方便地驱动Java对象的创建和初始化,常用于框架和应用服务器的配置。 8. **Exec组件**:提供了一个更高级别的API来执行外部进程,可以控制...
然而,Jackson库本身并不直接属于Jakarta项目,但其广泛应用于各类Java Web应用中,因此可能是因为在某个特定的项目或环境中,它与Jakarta相关的其他技术一同被使用。 【压缩包子文件的文件名称列表】: 1. ...
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
在Web应用程序的早期阶段,Jakarta Taglibs是提高开发效率和代码可维护性的重要工具。尽管现代Web开发倾向于使用更先进的框架如Spring MVC或React等,但了解Jakarta Taglibs对于理解Web应用的历史和进阶Java Web开发...
赠送jar包:jakarta.validation-api-2.0.2.jar; 赠送原API文档:jakarta.validation-api-2.0.2-javadoc.jar; 赠送源代码:jakarta.validation-api-2.0.2-sources.jar; 赠送Maven依赖信息文件:jakarta.validation...
apache-jakarta旗下的所有开源项目jar文件 apache-jakarta-commons-codec.jar apache-jakarta-commons-collections.jar apache-jakarta-commons-discovery.jar apache-jakarta-commons-email.jar apache-jakarta-...
Jakarta EE(以前称为Java EE)是一套用于构建可扩展、高性能、企业级应用程序的标准和框架。Jakarta JWS API作为其中的一部分,为Java Web服务提供了一种标准化的方法,确保跨不同平台和环境的一致性。 在实际开发...