SAXBuilder解析xml文件内容用于公共参数的校验

SAXBuilder解析xml文件内容
xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<IELPM name="快捷支付-绑卡支付">
<merIn>
<merchantNo length="16" must="y" mer="MERCHANTNO"></merchantNo>
<version length="20" must="n" mer="VERSION"></version>
<channelNo length="50" must="n" mer="CHANNELNO"></channelNo>
<tranCode length="6" must="y" mer="TRANCODE"></tranCode>
<tranFlow length="32" must="y" mer="TRANFLOW"></tranFlow>
<tranDate length="8" must="y" mer="TRANDATE"></tranDate>
<tranTime length="6" must="y" mer="TRANTIME"></tranTime>
<bindId length="50" must="y" mer="BINDID"></bindId>
<amount length="16" must="y" mer="AMOUNT"></amount>
<payType length="5" must="y" mer="PAYTYPE"></payType>
<remark length="100" must="y" mer="REMARK"></remark>
<notifyUrl length="300" must="y" mer="NOTIFYURL"></notifyUrl>
<bizType length="5" must="y" mer="BIZTYPE"></bizType>
<goodsName length="100" must="y" mer="GOODSNAME"></goodsName>
<goodsInfo length="100" must="n" mer="GOODSINFO"></goodsInfo>
<goodsNum length="100" must="n" mer="GOODSNUM"></goodsNum>
<buyerName length="256" must="y" mer="BUYERNAME"></buyerName>
<contact length="256" must="n" mer="CONTACT"></contact>
<buyerId length="100" must="y" mer="BUYERID"></buyerId>
<ext1 length="500" must="n" mer="EXT1"></ext1>
<ext2 length="500" must="n" mer="EXT2"></ext2>
<YUL1 length="500" must="n" mer="YUL1"></YUL1>
<YUL2 length="500" must="n" mer="YUL2"></YUL2>
<YUL3 length="500" must="n" mer="YUL3"></YUL3>
</merIn>
</IELPM>

/**
* 验证交易明细数据    一种新颖的方法

* @param context 数据内容
* @param fileName
* @return
*/
@SuppressWarnings("unchecked")
public static SMCode analysisTranData(Context context, String fileName, Map<String, String> param){
logger.info("商户请求交易数据...");
SAXBuilder builder = new SAXBuilder(false);
FileInputStream fis = null;
try {
String path = SMMsgUtil.class.getClassLoader().getResource("").toURI().getPath();    
fis = new FileInputStream(new File(path + fileName)); 


/* 获取目录数据  */
Document document = builder.build(fis);
List<Element> bodys = document.getRootElement().getChild("merIn").getChildren();


String fieldName = "";           // 域名
String fieldValue = "";          // 域值
int idx = 1;                     // 序号
for (Element element : bodys) {  // 遍历XML
String length = element.getAttributeValue("length");
String must = element.getAttributeValue("must");
String sqlName = element.getAttributeValue("mer");


fieldName = element.getName();
fieldValue = StringUtils.defaultString(param.get(fieldName)).trim();
logger.info("Field["+ idx +"]<"+ fieldName +">:" + fieldValue);


if("y".equals(must) && "".equals(fieldValue)){                                    // 判断是否为空
logger.info("必填字段未上送:Field["+ idx +"]"+ fieldName);
return SMCode.C0026;
}else{
if(fieldValue.length() > Integer.parseInt(length)){                           // 判断长度
logger.error("报文域长度不符:Field["+ idx +"]"+ fieldName);
return SMCode.C0026;
}
}
context.setFieldValue(sqlName, fieldValue);  // 添加到Context中
idx++;
}
return SMCode.C0000;
} catch (Exception e) {
logger.error("解析商户请求报文异常", e);
return SMCode.C9999;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值