Digester
2015-09-21 09:56
330 查看
基本步骤如下:
1.创建Digester对象实例。
2.设置该Digester对象的配置属性(可选)。
3.将需要的初始对象push到该Digester对象的对象栈上(可选)。
4.需要注册所有的XML元素匹配模式与处理规则之间的映射关系。
5.用digester.parse()解析的XML文档对象,得到目标对象。
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>
相关文章推荐
- UIView中触摸事件touchBegin
- [刷题]Sort Letters by Case
- Doze Mode
- linux 学习之路(学linux必看)
- iOS开发脚踏实地学习day11-导航控制器
- Octave入门基础
- 三维规划辅助决策系统
- Linux电源管理(8)_Wakeup count功能
- 一文了解大数据领域创业的机会与方向
- PHP写文件换行
- AAC规格(LC,HE,HEv2)及性能对比
- 黑马程序员——异常与包
- ubuntu server开机运行Qt图形界面程序
- Jbrowse中wiggle track中的刻度尺随着视野范围自动调整功能的实现
- 未知攻焉知防 — Webshell变形技术集锦-20150917
- Hibernate-映射 &inverse的探讨
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(八)——Struts与EasyUI使用JSON进行交互
- 企业进销存软件的解决方案
- oracle 传输表空间一例
- IOS工具篇