您的位置:首页 > 其它

Digester

2015-09-21 09:56 330 查看
基本步骤如下:

1.创建Digester对象实例。

2.设置该Digester对象的配置属性(可选)。

3.将需要的初始对象push到该Digester对象的对象栈上(可选)。

4.需要注册所有的XML元素匹配模式与处理规则之间的映射关系。

5.用digester.parse()解析的XML文档对象,得到目标对象。

public class Area {
private int    id;
private String name;
private String areaType;
private int    parentId;
private int    ordering;
private String zip;

private String phoneArea;

public int getOrdering() {
return ordering;
}
public void setOrdering(int ordering) {
this.ordering = ordering;
}
public String getAreaType() {
return areaType;
}
public void setAreaType(String areaType) {
this.areaType = areaType;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getParentId() {
return parentId;
}
public void setParentId(int parentId) {
this.parentId = parentId;
}

public String getZip() {
return zip;
}

public void setZip(String zip) {
this.zip = zip;
}

public String getPhoneArea() {
return phoneArea;
}

public void setPhoneArea(String phoneArea) {
this.phoneArea = phoneArea;
}
}
import java.util.ArrayList;
import java.util.List;

public class ViewCache {
private List areaList             = new ArrayList();
public List getAreaList() {
return areaList;
}
public void setAreaList(List areaList) {
this.areaList = areaList;
}

// 供Digester调用的方法
public void addArea(Area area) {
this.areaList.add(area);
}

}


import java.io.IOException;
import java.util.List;

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

public class AreaDigester {

public static ViewCache digester() throws Exception {
Digester digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("viewcache/areas", ViewCache.class);
// 指明匹配模式和要创建的类
digester.addObjectCreate("viewcache/areas/area", Area.class);
// 设置对象属性,与xml文件对应,不设置则是默认
digester.addBeanPropertySetter("viewcache/areas/area/id", "id");
digester.addBeanPropertySetter("viewcache/areas/area/parentId", "parentId");
digester.addBeanPropertySetter("viewcache/areas/area/name", "name");
digester.addBeanPropertySetter("viewcache/areas/area/areaType", "areaType");
digester.addBeanPropertySetter("viewcache/areas/area/ordering", "ordering");
digester.addBeanPropertySetter("viewcache/areas/area/zip", "zip");
digester.addBeanPropertySetter("viewcache/areas/area/phoneArea", "phoneArea");
// 当移动到下一个标签中时的动作
digester.addSetNext("viewcache/areas/area", "addArea");

ViewCache vc = null;
try {
vc = (ViewCache) digester.parse("viewcache.xml");
List li =vc.getAreaList();
for (Object object : li) {
Area a=(Area)object;
System.out.println("id:"+a.getId()+",name:"+a.getName());

}

} catch (IOException e) {
throw new Exception(e);
} catch (SAXException e) {
throw new Exception(e);
}
return vc;
}

public static void main(String[] args) throws Exception {

AreaDigester.digester();

}

}


<?xml version="1.0" encoding="UTF-8" ?>
<viewcache>
<areas>
<area>
<id>1098</id>
<parentId>1001</parentId>
<areaType>province</areaType>
<name>北京</name>
<ordering>1867</ordering>
</area>
<area>
<id>1099</id>
<parentId>1098</parentId>
<areaType>capital</areaType>
<name>北京</name>
<ordering>1868</ordering>
<phoneArea>010</phoneArea>
</area>
<area>
<id>4476</id>
<parentId>1099</parentId>
<areaType>county</areaType>
<name>北京市朝阳区</name>
<ordering>1869</ordering>
<phoneArea>010</phoneArea>
</area>
<area>
<id>4477</id>
<parentId>1099</parentId>
<areaType>county</areaType>
<name>北京市崇文区</name>
<ordering>1870</ordering>
<phoneArea>010</phoneArea>
</area>
<area>
<id>4478</id>
<parentId>1099</parentId>
<areaType>county</areaType>
<name>北京市大兴区</name>
<ordering>1871</ordering>
<phoneArea>010</phoneArea>
</area>
</areas>
</viewcache>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: