`

【翻译】Hello World with Apache Commons Digester

阅读更多
原文地址: http://kushanxp.blogspot.com/2011/02/hello-world-with-apache-commons.html


This example will shows how to get started with Apache Commons Digester.

What is Apache Commons Digester?

Simply, you can use this to read a XML file against a particular pattern (say, particular tag in XML file) and if it found, you can trigger some actions (say, a method, so that method will be called if that pattern is matched)

So Let's start then,

You shoud have JDK 1.5 installed and need to download several libraries, which are,

1. Apache Commons Digester Library.
2. Apache Commons Logging.
3. Apache Commons BeanUtils.

I'm using eclipse as the IDE, so here we go,

Create a Java project from eclipse and add those downloaded libraries to that and set the build path correctly.

Create a XML file with following contents:
<?xml version="1.0" encoding="UTF-8"?>
<vehicles>
    <suv>
        <vendor>honda</vendor>
        <model>HR-V</model>
        <enginecapacity>1590CC</enginecapacity>
        <enginetype>vtec</enginetype>
        <doors>5</doors>
        <color>silver</color>
    </suv>
    <suv>
        <vendor>toyota</vendor>
        <model>Prado</model>
        <enginecapacity>3000CC</enginecapacity>
        <enginetype>vvt-i</enginetype>
        <doors>5</doors>
        <color>silver</color>
    </suv>
</vehicles>


Create a Java class with a main method, Let's call this as DigesterTest.java

add following method there,

/**
     * Action method. This will be called if there any matched content.
     *
     * @param vendor
     *            Value of the tag "vendor".
     * @param model
     *            Value of the tag "model".
     * @param enginecapacity
     *            Value of the tag "enginecapacity".
     * @param enginetype
     *            Value of the tag "enginetype".
     * @param doors
     *            Value of the tag "doors".
     * @param color
     *            Value of the tag "color".
     */
    public void getVehicleInfo(String vendor, String model,
        String enginecapacity, String enginetype, String doors,
        String color) {
    System.out.println("Vendor : " + vendor);
    System.out.println("Model : " + model);
    System.out.println("Engine Capacity : " + enginecapacity);
    System.out.println("Engine Type : " + enginetype);
    System.out.println("Doors: " + doors);
    System.out.println("Color : " + color);
    }


    /**
     * Creates certain patterns to check against with XML file, if there a
     * match, action method will be called.
     *
     * @throws SAXException
     * @throws IOException
     */
    public void run() throws IOException, SAXException {

    Digester digester = new Digester();
    digester.push(new DigesterTest());

    digester.addCallMethod("vehicles/suv", "getVehicleInfo", 6);
    digester.addCallParam("vehicles/suv/vendor", 0);
    digester.addCallParam("vehicles/suv/model", 1);
    digester.addCallParam("vehicles/suv/enginecapacity", 2);
    digester.addCallParam("vehicles/suv/enginetype", 3);
    digester.addCallParam("vehicles/suv/doors", 4);
    digester.addCallParam("vehicles/suv/color", 5);

    InputStream inputStream = DigesterTest.class.getClassLoader()
        .getResourceAsStream("vehicles.xml");
    digester.parse(inputStream);

    }

    /**
     * Main method.
     *
     * @param args
     * @throws IOException
     * @throws SAXException
     */
    public static void main(String[] args) throws IOException, SAXException {
    DigesterTest digesterTest = new DigesterTest();
    digesterTest.run();

    }


Here is the directory structure of my eclipse project,
[img]
https://lh6.googleusercontent.com/-hqqGTdt1NxM/TWOADmOgMeI/AAAAAAAAAr0/VqIKa8IHSqk/s1600/digester.PNG
[/img]

4 comments:

kris said...

    Nice stuff, keep them coming..
    March 1, 2011 2:18 AM
Kushan Jayathilake said...

    Thank you..
    March 1, 2011 9:38 AM
Anonymous said...

    I think that xpath+extended vtd-xml serve a better option in terms of performance and ease of use
    March 1, 2011 2:33 PM
Kushan Jayathilake said...

    Yeah, it can be used to read a XML, but can it be given a set of rules (rule types and the count of rules) and a method to call if the rules are match?
    March 1, 2011 2:57 PM
分享到:
评论

相关推荐

    利用commons-digester解析xml

    标题“利用commons-digester解析XML”涉及到的是Java开发中的一种处理XML文档的工具——Apache Commons Digester。这个库提供了一种方便的方式来映射XML文档结构到Java对象,从而简化了XML数据的处理过程。 Apache ...

    Apache Commons Digester 的使用

    NULL 博文链接:https://longsy.iteye.com/blog/380360

    commons-digester.jar

    `commons-digester.jar`是Apache Commons项目中的一个组件,主要功能是解析XML文档并根据预定义的规则自动创建和填充Java对象。这个组件在Java应用程序中尤其有用,特别是那些需要从XML配置文件中构建复杂对象层次...

    commons-digester3-3.2-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-digester3:3.2; 标签:apache、commons、digester3、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    commons-digester-2.1.jar

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

    org.apache.commons.digester解析XML.rar

    Apache Commons Digester是一个Java库,专门用于将XML文档解析成对象结构。这个“org.apache.commons.digester解析XML.rar”压缩包包含了一个测试工程,它演示了如何使用Digester库来解析XML文件并映射到Java对象上...

    commons-digester3-3.2-API文档-中英对照版.zip

    Maven坐标:org.apache.commons:commons-digester3:3.2; 标签:apache、commons、digester3、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

    commons-digester-1.7.jar.zip

    在标题和描述中提到的"commons-digester-1.7.jar.zip"是一个包含Apache Commons Digester 1.7版本的压缩文件,它包含了`commons-digester-1.7.jar`库本身以及相关的`commons-digester-1.7.jar.license.txt`文件,后...

    commons-digester-1.7.zip

    这个"commons-digester-1.7.zip"文件包含了Apache Commons Digester库的1.7版本,这是一个广泛用于处理XML到Java对象映射的开源组件。 在Java开发中,XML通常用于存储和传输数据,因为它具有结构化和可读性。然而,...

    commons-digester-2.0.jar.zip

    《Apache Commons Digester详解及其在Java开发中的应用》 Apache Commons Digester是一个强大的Java库,主要功能是解析XML文档,并根据预定义的规则将其转换为Java对象。在标题"commons-digester-2.0.jar.zip"中,...

    commons-digester-2.1.jar.zip

    《Apache Commons Digester详解》 Apache Commons Digester是一款在Java开发中广泛使用的开源库,它提供了处理XML文档的强大工具,可以将XML数据映射到Java对象。这个库的名字"Digester"源自其功能,就像一个消化...

    commons-digester-2.0.rar源文件及jar文件

    《Apache Commons Digester 2.0:解析XML的利器》 Apache Commons Digester是一个Java库,主要用于将XML文档解析成Java对象。这个库的核心功能是根据预定义的规则(Rule)来读取XML文档,然后根据这些规则进行一...

    使用Apache_Commons_Digester

    ### 使用Apache Commons Digester开发指南 #### 概述 Apache Commons Digester 是一款基于 Java 的开源库,专门用于简化 XML 文件解析的过程。它利用 SAX(Simple API for XML)解析器来解析 XML 数据,并通过一...

    xml解析commons-digester的demo

    Apache Commons Digester是Java中一个强大的工具,它提供了方便的方式来解析XML文档,并将解析出的数据绑定到Java对象上,实现对象的自动创建和初始化。本示例将详细介绍如何使用Apache Commons Digester进行XML解析...

    rh-maven33-apache-commons-digester-1.8.1-19.13.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    commons-digester.jar下载

    在给定的标题"commons-digester.jar下载"和描述"commons-digester3-3.0.jar下载"中,我们关注的是Apache Commons Digester项目的版本3.0。 Apache Commons Digester项目是Apache软件基金会的一部分,它为Java开发者...

    apache commons jar(commons所有的jar包,从官网下载提供给大家)

    daemon-1.0.15-bin commons-dbutils-1.6-bin commons-digester3-3.2-bin commons-el-1.0 commons-email-1.4-bin commons-fileupload-1.0 commons-fileupload-1.1.1 commons-fileupload-1.1 commons-file upload-...

    apache commons all 中文api合集

    apache commons all 中文api合集

    commons-digester

    标题中的"commons-digester"是指Apache Commons项目中的一个模块,专门用于XML解析和对象绑定。这个库提供了方便的方法来将XML文档解析成Java对象,它通过定义一系列规则(Rules)来实现XML到对象的映射,使得处理...

    jenkins subversion 插件 2.15.4

    解决jenkins 升级后报:FATAL: org/apache/commons/digester/Digester java.lang.ClassNotFoundException: org.apache.commons.digester.Digester 的问题

Global site tag (gtag.js) - Google Analytics