`
xuweilovejava
  • 浏览: 8654 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Digester解析xml

阅读更多
public  class Contact
{
    private String type;
    private String name;
    private String address;
    private String city;
    private String province;
    private String postalcode;
    private String country;
    //增加一个country的属性: from
    private String countryFrom;
    private String telephone;

    public void setType(String newType)
    {
        type = newType;
    }
    public String getType()
    {
        return type;
    }

    public void setName(String newName)
    {
        name = newName;
    }
    public String getName()
    {
        return name;
    }

    public void setAddress(String newAddress)
    {
        address = newAddress;
    }
    public String getAddress()
    {
        return address;
    }

    public void setCity(String newCity)
    {
        city = newCity;
    }
    public String getCity()
    {
        return city;
    }

    public void setProvince(String newProvince)
    {
        province = newProvince;
    }
    public String getProvince()
    {
        return province;
    }

    public void setPostalcode(String newPostalcode)
    {
        postalcode = newPostalcode;
    }
    public String getPostalcode()
    {
        return postalcode;
    }

    public void setCountry(String newCountry)
    {
        country = newCountry;
    }
    public String getCountry()
    {
        return country;
    }

    public void setTelephone(String newTelephone)
    {
        telephone = newTelephone;
    }
    public String getTelephone()
    {
        return telephone;
    }

    public String getCountryFrom() {
        return countryFrom;
    }

    public void setCountryFrom(String countryFrom) {
        this.countryFrom = countryFrom;
    }
}

 

import java.io.File;
import java.io.IOException;

import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;

public class AddressBookParser {
	 /**
     * Prints the contact information to standard output.
     *
     * @param contact the <code>Contact</code> to print out
     */
	 public void addContact(Contact contact)
	    {
	        System.out.println("TYPE: " + contact.getType());
	        System.out.println("NAME: " + contact.getName());
	        System.out.println("    ADDRESS:    " + contact.getAddress());
	        System.out.println("    CITY:       " + contact.getCity());
	        System.out.println("    PROVINCE:   " + contact.getProvince());
	        System.out.println("    POSTALCODE: " + contact.getPostalcode());
	        System.out.println("    COUNTRY:    " + contact.getCountry());
	        System.out.println("    COUNTRY-From:    " + contact.getCountryFrom());
	        System.out.println("    TELEPHONE:  " + contact.getTelephone());
	    }

    /**
     * Configures Digester rules and actions, parses the XML file specified
     * as the first argument.
     *
     * @param args command line arguments
     */
    public static void main(String[] args) throws IOException, SAXException
    {
        // instantiate Digester and disable XML validation
        Digester digester = new Digester();
        digester.setValidating(false);

        // instantiate AddressBookParser class
        digester.addObjectCreate("address-book", AddressBookParser.class );
        // instantiate Contact class
        digester.addObjectCreate("address-book/contact", Contact.class );

        // set type property of Contact instance when 'type' attribute is found
        //对有属性的值通过setProperties方法

        digester.addSetProperties("address-book/contact",         "myType", "type" );

        // set different properties of Contact instance using specified methods
        //addCallMethod与addBeanPropertySetter等价
        // 参数 0代表一个参数,默认就是当前读的数据

        digester.addCallMethod("address-book/contact/name",       "setName", 0);
        digester.addCallMethod("address-book/contact/address",    "setAddress", 0);
        digester.addCallMethod("address-book/contact/address",    "setAddress",0);
        digester.addCallMethod("address-book/contact/city",       "setCity", 0);
        digester.addCallMethod("address-book/contact/province",   "setProvince", 0);
        digester.addCallMethod("address-book/contact/postalcode", "setPostalcode", 0);
        digester.addCallMethod("address-book/contact/country",    "setCountry", 0);



        //增加country的属性 : from
        digester.addSetProperties("address-book/contact/country","from","countryFrom");
        digester.addCallMethod("address-book/contact/telephone",  "setTelephone", 0);

        // call 'addContact' method when the next 'address-book/contact' pattern is seen
        digester.addSetNext("address-book/contact",               "addContact" );

        // now that rules and actions are configured, start the parsing process
        AddressBookParser abp = (AddressBookParser) digester.parse(new File("test.xml"));
    }
}

 

<?xml version='1.0' encoding='utf-8'?>
<address-book>
    <contact myType="individual">
        <name>Zane Pasolini</name>
        <address>999 W. Prince St.</address>
        <city>New York</city>
        <province>NY</province>
        <postalcode>10013</postalcode>
        <country>USA</country>
        <telephone>1-212-345-6789</telephone>
    </contact>
    <contact myType="business">
        <name>SAMOFIX d.o.o.</name>
        <address>Ilica 47-2</address>
        <city>Zagreb</city>
        <province></province>
        <postalcode>10000</postalcode>
        <country from="cn">Croatia</country>
        <telephone>385-1-123-4567</telephone>
    </contact>
</address-book>

 文章出处:http://www.blogjava.net/alex/archive/2006/09/06/68148.html

分享到:
评论

相关推荐

    利用commons-digester解析xml

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

    digester解析xml的问题.pdf

    Digester 是 Apache Commons 中的一个工具类库,它用于解析 XML 文档,并根据预先定义的规则自动创建和配置 Java 对象。在上述问题中,我们看到一个 XML 文档表示了一个考试,其中包含了多个题目,每个题目有其编号...

    Digester解析XML文件

    本文将深入探讨如何使用Digester解析XML文件,以及在实际项目中如何应用。 首先,让我们了解什么是Apache Commons Digester。这是一个Java库,它的主要功能是读取XML文件,并基于一系列预先定义的规则(Rule),...

    digester解析xml必备包.rar

    这个“digester解析xml必备包.rar”包含了三个关键的jar包,它们是实现Digester功能所必需的。 1. **commons-logging-1.2.jar**:这是Apache Commons Logging库的版本1.2。它提供了一个抽象层,允许开发者使用多种...

    使用Digester解析XML文档示例

    ### 使用Digester解析XML文档示例 #### 一、Digester简介与应用场景 Digester是Apache Jakarta项目下的一个工具类库,它简化了基于SAX(Simple API for XML)的XML解析过程。Digester能够根据定义好的规则自动将...

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

    这个“org.apache.commons.digester解析XML.rar”压缩包包含了一个测试工程,它演示了如何使用Digester库来解析XML文件并映射到Java对象上。下面将详细介绍这个库的功能、使用方法以及在实际开发中的应用。 1. **...

    Digester解析XML

    ### Digester解析XML知识点详解 #### 一、Digester简介 **Digester** 是Apache Commons项目中的一个子项目,主要用于简化XML文档的解析工作。它建立在SAX的基础之上,通过定义一系列的模式(Pattern)和规则(Rule...

    digester解析XML文件实例

    这个"digester解析XML文件实例"是一个很好的学习资源,帮助开发者理解如何在实际项目中运用Digester。 首先,我们要了解Digester的基本工作原理。Digester通过定义一系列规则(Rules),当解析到XML文档中特定的...

    digester解析xml

    《digester解析XML详解》 在Java开发中,XML作为一种数据交换格式,广泛应用于配置文件、数据传输等场景。为了方便地将XML文档解析为Java对象,Apache组织提供了一个名为Digester的工具库,它允许开发者通过规则来...

    digester 解析xml

    **使用Digester解析XML并验证** 1. **设置 Digester 规则** 在使用Digester之前,我们需要定义一系列规则,告诉Digester在遇到XML文档的哪些元素时执行什么操作。这些规则通常涉及到创建新对象、设置对象属性或者...

    Digester解析XML的小例子(对象嵌套)

    在Java开发中,Struts框架提供了一个强大的工具——Digester,用于解析XML文件并自动创建、配置Java对象。本文将详细介绍如何使用Digester处理具有嵌套结构的XML文档,并通过一个具体的实例——"DigesterXmlTest"来...

    java反射,Digester解析xml文档

    **Digester** 是Apache Commons项目中的一个库,它专门用于解析XML文档,并基于规则将其转换为Java对象。Digester通过匹配XML元素结构来调用对象的方法或创建新对象,减少了手动解析XML的复杂性。这在配置驱动的Java...

    Digester解析XML问题.pdf

    在示例代码中, DigesterDriver演示了如何配置 Digester来解析XML文件,创建`Catalog`对象并填充其`Book`和`Magazine`子对象,以及相关的`Article`对象。每个元素的属性通过`addBeanPropertySetter()`设置,而对象...

    使用digester解析XML

    不错的解析XML的类,主要利用org.apache.commons.digester.Digester;

    digester解析xml 所需jar包

    本篇文章将详细介绍如何使用`Digester`解析XML,以及在使用过程中需要的依赖库。 首先,`Digester`的核心功能是通过定义规则来将XML元素与Java对象的属性或方法关联,这样在解析XML时,可以自动创建和填充Java对象...

    Digester读取xml教程.rar

    《使用Digester解析XML的深度指南》 在Java开发中,处理XML文件是常见的任务,而Apache Commons Digester库提供了一种高效且便捷的方式来解析XML并将其映射到Java对象。本教程将深入探讨如何使用Digester来读取XML...

Global site tag (gtag.js) - Google Analytics