`

Digester在项目中应用

 
阅读更多

Digester由"事件"驱动,通过调用预定义的规则操作对象栈,将XML文件转换为Java对象。

对使用者而言,Digester的核心在于匹配模式与规则(matching pattern + rule)。

其实就两点:

1、用一个XML文件定义Java对象的状态(数据源文件),

2、另一个XML文件定义装载数据源文件的装载逻辑

场景:

CRM要调用帐管的接口查帐单,由于帐管接口未定下来,或者经常变动。

所以先定义好帐单类,因为展示形式相对固定,所以可以先定义好类。

然后

		String result = external2Oss.ossRequest(param);//帐管返回的帐单字符串
		if (param.getRequestNo()==5) {
			result="<?xml version='1.0' encoding='GBK'?><oss-response>	<BillInfo billCycle='20070701_20070801' totalCharge='130.0' unpaymentCharge='130.0' thisCharge='130.0' prepayCharge='0.0' adustmentCharge='0.0' freeCharge='0.0'></BillInfo></oss-response>";
		}
		String clsName = t.getName().replaceAll("\\.", "/") + ".xml";
		URL rulesURL = t.getClassLoader().getResource(clsName);
		Digester d = DigesterLoader.createDigester(rulesURL);
		d.push(obj);
		InputStream is = new ByteArrayInputStream(result.getBytes("GBK"));
		d.parse(is);

 这样,以后改了接口的时候只要修改XML即可。

 

应用场景:

1.appframe解析defaults.xml

    at org.apache.commons.digester.Digester.parse(Digester.java:1666)
    at com.ai.appframe2.complex.xml.XMLHelper.createDefaults(XMLHelper.java:304)
    at com.ai.appframe2.complex.xml.XMLHelper.getInstance(XMLHelper.java:79)
    at com.ai.appframe2.service.ServiceFactory.<clinit>(ServiceFactory.java:27)

2.tomcat解析server.xml

catalina.java

    protected Digester createStartDigester() {
        long t1=System.currentTimeMillis();
        // Initialize the digester
        Digester digester = new Digester();
        digester.setValidating(false);
        digester.setRulesValidation(true);
        HashMap<Class, List<String>> fakeAttributes = new HashMap<Class, List<String>>();
        ArrayList<String> attrs = new ArrayList<String>();
        attrs.add("className");
        fakeAttributes.put(Object.class, attrs);
        digester.setFakeAttributes(fakeAttributes);
        digester.setClassLoader(StandardServer.class.getClassLoader());

        // Configure the actions we will be using
        digester.addObjectCreate("Server",
                                 "org.apache.catalina.core.StandardServer",
                                 "className");
        digester.addSetProperties("Server");
        digester.addSetNext("Server",
                            "setServer",
                            "org.apache.catalina.Server");

        digester.addObjectCreate("Server/GlobalNamingResources",
                                 "org.apache.catalina.deploy.NamingResources");....

 

 

分享到:
评论

相关推荐

    Digester

    Digester是Apache软件基金会下的Jakarta项目中的一个Java库,主要用于简化XML到Java对象的映射过程。在处理XML文档时,它通过匹配XML元素结构到相应的Java对象的方法调用,实现了XML解析的自动化。这个工具对于那些...

    Castor、digester实例

    Castor和Digester是两个在Java开发...在实际项目中,可能需要结合使用这两个库,以充分利用它们的优势。通过上述实例,你应该对如何使用Castor和Digester有了基本的理解,但要完全掌握它们,还需要进一步的实践和学习。

    Digester java解析xml

    总的来说,Digester 是一个功能强大的XML解析工具,能够简化Java应用中XML数据的处理。通过合理地利用其规则和特性,可以高效地将XML文档转化为易于操作的对象模型,极大地提高了开发效率。在实际项目中,了解并熟练...

    digester3.2 源码

    在实际开发中,digester3.2常用于构建配置文件驱动的应用程序,因为它允许灵活地将XML配置映射到Java对象,降低了代码与配置之间的耦合度。例如,在Web应用程序中,可以使用digester来解析web.xml文件,动态地创建和...

    commons-digester.jar

    8. **使用示例**: 在实际应用中,首先你需要创建一个 Digester实例,然后定义并添加RuleSet。接着,调用`parse()`方法,传入XML输入源,这样Digester就会开始解析XML并执行相应的Rule,创建和填充Java对象。 例如,...

    commons-digester-2.1.jar

    `commons-digester-2.1.jar` 是Apache Commons项目中的一个组件,主要负责XML文档的解析和对象的创建与绑定。Apache Commons Digester库提供了一种规则驱动的方法来解析XML文档,并根据预定义的规则将XML数据映射到...

    Digester两种解析方式

    在Java开发中,Apache Commons Digester是一个非常有用的库,它允许开发者通过XML配置来...在实际应用中,还可以结合使用这两种方法,以便在需要灵活性的地方使用硬编码规则,在其他地方利用规则文件来保持代码整洁。

    digester包

    本文将深入探讨digester包的原理、使用方法以及在实际项目中的应用。 首先,让我们了解什么是Apache Commons Digester。digester是一个开源Java库,它通过定义规则来解析XML文档,这些规则决定了当XML文档中的特定...

    Digester读取xml教程.rar

    在Java开发中,处理XML文件是常见的任务,而Apache Commons Digester库提供了一种高效且便捷的方式来解析XML并将其映射到Java对象。本教程将深入探讨如何使用Digester来读取XML文件,帮助你更好地理解和应用这一强大...

    XML的解析之——使用Digester

    首先,我们需要在Eclipse环境中创建一个项目,并引入Apache Commons Digester库。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;commons-digester &lt;artifactId&gt;commons-digester &lt;version&gt;...

    浅析Digester

    本文将深入探讨Digester的功能、工作原理以及如何在实际项目中应用。 **一、什么是Digester** Apache Commons Digester是一个用于读取XML文档并根据预定义规则自动创建和填充Java对象的工具。它通过使用匹配模式来...

    digester组件简化了xml文件处理操作

    - **栈数据结构**: 在解析过程中,Digester使用栈来保存和检索生成的Java对象。这种方式有利于处理嵌套层次较深的XML元素。 ##### 2. 模式匹配 - Digester通过匹配模式来定位XML文件中的元素。模式匹配是一种灵活的...

    commons-digester源码

    Commons Digester项目通常包括几个主要组件: - `digester`: 主要的解析器类,负责读取XML文档并应用规则。 - `rules`: 规则接口和实现,定义了如何处理XML元素和属性。 - `util`: 辅助工具类,如`...

    commons-digester-1.7.zip

    在实际应用中,Commons Digester通过`Digester`类作为主要入口点,开发人员可以设置一系列的规则(如`Rule`对象),这些规则定义了XML元素如何触发Java对象的创建和操作。例如,你可以指定当遇到XML文档中的某个元素...

    digester解析xml必备包.rar

    总之,Apache Commons Digester是一个强大的工具,它简化了XML文档到Java对象的映射,使得在Java应用中处理XML数据变得更加便捷。结合 Commons Logging 和 Commons BeanUtils,可以实现更高效、灵活的XML解析和数据...

    digester(浅谈第一次使用)

    7. **在MVC框架中的应用**:在MVC框架中, Digester可以帮助解析配置文件,创建和配置控制器、视图和模型组件。例如,它可以用来加载bean定义,设置依赖关系,以及执行其他初始化任务。 8. **最佳实践**:使用...

    xml解析commons-digester的demo

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件配置、数据交换等领域。Apache Commons Digester是Java中一个强大...注意,实际应用中可能需要根据XML结构和业务需求调整规则。

    digester jar 包

    `digester`是Apache Commons项目中的一个库,专门设计来帮助开发者方便地将XML文档解析成Java对象。在本文中,我们将深入探讨Java解析XML文件,特别是使用Digester库的过程。 1. **Java解析XML的基本概念** 在Java...

    Digester解析XML

    在实际应用中,通常会关闭验证以提高性能。 - **`addObjectCreate(String pattern, Class&lt;?&gt; clazz)`**:指定模式 `pattern` 匹配到的元素创建的对象类型为 `clazz`。 - **`addBeanPropertySetter(String pattern, ...

Global site tag (gtag.js) - Google Analytics