首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

commons-digest札记

2012-12-28 
commons-digest笔记本文为转载且为截取的片段,如有需要请访问原帖待解析的xml?xml version1.0?acade

commons-digest笔记
本文为转载且为截取的片段,如有需要请访问原帖

待解析的xml

<?xml version="1.0"?><academy name="JAcademy"><student name="JavaBoy" division="A"><course><id>C1</id><name>JSP</name></course><course><id>C2</id><name>Servlets</name></course></student><student name="JavaGirl" division="B"><course><id>C3</id><name>EJB</name></course></student><teacher name="JavaGuru"><certification>SCJP</certification><certification>SCWCD</certification></teacher><teacher name="JavaMaster"><certification>OCP</certification><certification>SCJP</certification><certification>SCEA</certification></teacher></academy>


<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE digester-rules PUBLIC   "-//Jakarta Apache //DTD digester-rules XML V1.0//EN"   "digester-rules.dtd"><digester-rules><pattern value="academy"><object-create-rule classname="cn.com.legendapl.xmldigest.config.ConfigBean" /><set-properties-rule /><pattern value="student"><object-create-rule classname="cn.com.legendapl.xmldigest.config.StudentBean" /><set-properties-rule /><pattern value="course"><object-create-rule classname="cn.com.legendapl.xmldigest.config.CourseBean" /><set-properties-rule /><bean-property-setter-rule pattern="id" /><bean-property-setter-rule pattern="name" /><set-next-rule methodname="addCourseBean" /></pattern><set-next-rule methodname="addStudentBean" /></pattern><pattern value="teacher"><object-create-rule classname="cn.com.legendapl.xmldigest.config.TeacherBean" /><set-properties-rule /><call-method-rule pattern="certification" methodname="addCertification" paramcount="1"/><call-param-rule pattern="certification" paramnumber="0"/><set-next-rule methodname="addTeacherBean" /></pattern></pattern></digester-rules>



四个配置类。为了简单和节约博客的空间,getter/setter已删去。
public class AcademyBean {private String name;private List<StudentBean> studentList = new ArrayList<StudentBean>();private List<TeacherBean> teacherList = new ArrayList<TeacherBean>();public static URL getRuleFile() {return AcademyBean.class.getClassLoader().getResource("cn/com/legendapl/xmldigest/config/rule.xml");}public void addTeacherBean(TeacherBean bean) {this.teacherList.add(bean);}public void addStudentBean(StudentBean bean) {this.studentList.add(bean);}}public class StudentBean {private String name;private String division;private List<CourseBean> courseBeans = new ArrayList<CourseBean>();public void addCourseBean(CourseBean bean) {courseBeans.add(bean);}}public class CourseBean {private String id;private String name;}public class TeacherBean {private String name;private Set<String> certifications = new HashSet<String>();public void addCertification(String certification) {this.certifications.add(certification);}}


读取配置的工具类也可以做一个
public final class ConfigUtils {private ConfigUtils() {}private static AcademyBean config = null;public static AcademyBean getConfig() {if (config == null) {Digester digester = DigesterLoader.createDigester(AcademyBean.getRuleFile());try {config = (AcademyBean)digester.parse(ConfigUtils.class.getClassLoader().getResource("academy.xml"));} catch (Exception e) {throw new RuntimeException(e.getMessage(), e);}}return config;}}



下面还有一个更详细的参考
http://onjava.com/pub/a/onjava/2002/10/23/digester.html

附件里放着rule.xml的dtd文件开放时放在rule.xml同一个目录即可

热点排行