Digester解析XML字段赋值
XML文件:
<?xml version="1.0" encoding="GBK" standalone="no" ?> <ROOT> <RETURN_CODE type="long">0</RETURN_CODE> <RETURN_MSG type="string">ok!</RETURN_MSG> <USER_MSG type="string">ok!</USER_MSG> <DETAIL_MSG type="string">OK!</DETAIL_MSG> <PROMPT_MSG type="string"/> <OUT_DATA> <DATA> <LIST> <LIST_INFO> <EFF_DATE type="string">20190222135846</EFF_DATE> <EXP_DATE type="string">20991231235959</EXP_DATE> <MAX_ORDER_NUM type="int">10</MAX_ORDER_NUM> <USED_ORDER_NUM type="int">0</USED_ORDER_NUM> <LIMIT_INFO> <LIMIT_FLAG type="string">X</LIMIT_FLAG> <EFF_DATE type="string">20190222135846</EFF_DATE> <EXP_DATE type="string">20991231235959</EXP_DATE> <NOTES type="string">xxxxx</NOTES> <LIST/> <RETURN_CODE type="string">403019589</RETURN_CODE> </LIMIT_INFO> </LIST_INFO> </LIST> </DATA> </OUT_DATA> </ROOT>
上面的XML中,LIST_INFO节点下存在两种属性:属性值是基本类型,比如EFF_DATE,EXP_DATE等;属性值是另一个节点,比如LIMIT_INFO。解析规则如下:
//基本数据类型:模式,字段名
digester.addBeanPropertySetter("ROOT/OUT_DATA/DATA/LIST/LIST_INFO/EFF_DATE", "effDate");
//引用数据类型:模式,相应setter方法
digester.addSetNext("ROOT/OUT_DATA/DATA/LIST/LIST_INFO/LIMIT_INFO", "setLimitInfo");