使用Digester解析XML配置文件

XMLJava对象

Java项目中经常使用XML配置文件管理后台应用规则、实现程序初始化等操作。Digester便是专门用于从XML映射到Java对象的开源组件。它最初起源于大名鼎鼎的Struts,用于其中的配置解析工作。后来考虑到其实用性,便将其提取为独立的Apache项目,即Digester

 

示例1

有如下XMLconfig.xml):

<root>

      <parent pname="p1">

            <child cname="c1">child1</child>

            <child cname="c2">child2</child>

      </parent>

</root>

将其转化为如下对象:

Parent.java

Child.java

package com.vc.digester;

 

import java.util.ArrayList;

import java.util.List;

 

public class Parent {

       private String name;

       private List<Child> childs;

 

       public String getName() {

              return name;

       }

       public void setName(String name) {

              this.name = name;

       }

       public List<Child> getChilds() {

              return childs;

       }

       public void setChilds(List<Child> childs) {

              this.childs = childs;

       }

       public void addChild(Child c){

              if(childs==null)childs=new ArrayList<Child>();

              childs.add(c);

       }

}

 

package com.vc.digester;

 

public class Child {

       private String name;

       private String value;

      

       public String getName() {

              return name;

       }

       public void setName(String name) {

              this.name = name;

       }

       public String getValue() {

              return value;

       }

       public void setValue(String value) {

              this.value = value;

       }

}

 

 

 

解析方法1

TestConfig1.java

package com.vc.digester;

 

import java.util.ArrayList;

import java.util.List;

import org.apache.commons.digester.Digester;

 

public class TestConfig1 {

      

       /**

        * @param args

        */

       public static void main(String[] args) {

              Digester digester=new Digester();

              //digester.setValidating(false);

              digester.addObjectCreate("root",ArrayList.class);//create an ArrayList when got a ‘/root’ element

              digester.addObjectCreate("root/parent", Parent.class);

              digester.addObjectCreate("root/parent/child", Child.class);

             

              digester.addSetProperties("root/parent", "pname","name");

              digester.addSetProperties("root/parent/child","cname","name");//set propertiy:cname to Child.name

              digester.addBeanPropertySetter("root/parent/child","value");//set node value to Child.value

             

              digester.addSetNext("root/parent", "add");//use add() method of List

              digester.addSetNext("root/parent/child","addChild");

             

              try {

                     List<Parent> parents=(ArrayList<Parent>) digester.parse("C:/ config.xml");

                     System.out.println(parents.get(0));

              } catch (Exception e) {

                     e.printStackTrace();

              }

       }

 

}

 

 

 

附:

HomePagehttp://commons.apache.org/digester/

Download src and binarieshttp://commons.apache.org/digester/download_digester.cgi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值