Jakarta-Common-Digester解析复杂xml

		digester.addObjectCreate("报表信息", Report.class);
		digester.addObjectCreate("报表信息/查询条件", QueryCondition.class);
		digester.addObjectCreate("报表信息/查询语句", QueryParagraph.class);
		digester.addObjectCreate("报表信息/查询语句/普通查询", NormalQuery.class);
		digester.addObjectCreate("报表信息/查询语句/普通查询/SQL", Sql.class);

		digester.addSetNext("报表信息/查询条件", "setQueryCondition");
		digester.addSetNext("报表信息/查询语句", "setQueryParagraph");
		digester.addSetNext("报表信息/查询语句/普通查询", "addNoramlQueryList");
		digester.addSetNext("报表信息/查询语句/普通查询/SQL", "setSql");

		digester.addCallMethod("报表信息/查询语句/普通查询/SQL", "setValue", 0);

		digester.addSetProperties("报表信息/查询条件", "报表源", "reportSource");
		digester.addSetProperties("报表信息/查询语句/普通查询/SQL", "T表名", "tName");

要点

 

 1、按照模式定义对象。例如:        digester.addObjectCreate("报表信息/查询语句/普通查询", NormalQuery.class);
        2、如果下级包含的是单个对象就用        digester.addSetNext("报表信息/查询语句", "setQueryParagraph");
            如果下级是多个则定制添加列表方法         digester.addSetNext("报表信息/查询语句/普通查询", "addNoramlQueryList");
        3、设置对象的属性使用        digester.addSetProperties("报表信息/查询语句/普通查询/SQL", "T表名", "tName");
            如果对象的下级是文本内容则调用         digester.addCallMethod("报表信息/查询语句/普通查询/SQL", "setValue", 0);


           多级的xml解析有点复杂,开始的时候怎么写都不对,原来是复制代码的时候模式写错了,快要放弃的时候时候终于发现了问题,
           所以很多时候如果遇到不合逻辑的错误的时候,那问题的原因可能是很简单的失误。

           好久没有写代码,今天花半天时间和半夜的一点时间解决了问题还是觉得很开心的。

你可能感兴趣的:(xml digester)