Digester

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



示例1

有如下XML(config.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();

}

}



}








附:

HomePage:http://commons.apache.org/digester/

Download src and binaries:http://commons.apache.org/digester/download_digester.cgi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值