微信回调数据处理 (xml --> map)
来源:互联网 发布:sql删除重复的数据 编辑:程序博客网 时间:2024/06/04 18:38
由于工作上需要对接微信的支付接口,不过我对接的是华阳的接口,大部分都是以json数据传输的了(华阳中间对xml文件进行了转换)
但是支付之后回调的通知华阳并没有处理,我接收到的数据还是xml文件格式的,现在做java的大部分都是以json为主,说真的,个人很反感xml文件格式的数据传输
不过要做回调,也没办法,只能想办法去转换,获取数据,网上有很多关于xml文件转换的工具类,不过我不想使用,我想用jdk自带的API来完成这个转换。自然
而然的我们就会想到正则表达式,这家伙在把数据格式化处理起了很大的作用,学程序的应该都知道这个东西,好了,开始我要做的工作
原始的数据是
<xml><appid><![CDATA[wx2421b1c4370ec43b]]></appid><attach><![CDATA[支付测试]]></attach><bank_type><![CDATA[CFT]]></bank_type><fee_type><![CDATA[CNY]]></fee_type></xml>
第一步是先去掉 前后的 xml 标签,因为不需要用到, 正则表达式是 </?xml> ? 问号有两个功能, 1,是表示前面的字符串出现0或1次 2是开启懒惰匹配模式
在这里即表示匹配 </xml> 其中 / 字符有或没有都会匹配得到
<appid><![CDATA[wx2421b1c4370ec43b]]></appid><attach><![CDATA[支付测试]]></attach><bank_type><![CDATA[CFT]]></bank_type><fee_type><![CDATA[CNY]]></fee_type>
剩下的就以代码给出来吧,写太多文件估计也没人爱看
package com.project.test;import java.util.HashMap;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test7 {public static void main(String[] args) {String xmlString = "<xml>" + "<appid><![CDATA[wx2421b1c4370ec43b]]></appid>" + "<attach><![CDATA[支付测试]]></attach>" + "<bank_type><![CDATA[CFT]]></bank_type>" + "<fee_type><![CDATA[CNY]]></fee_type>" + "<total_fee>1</total_fee>" + "</xml>";//去掉前后的xml标签xmlString = xmlString.replaceAll("</?xml>", "");System.out.println(xmlString);//匹配一段一段这样的数据 <attach><![CDATA[支付测试]]></attach>Pattern pattern = Pattern.compile("<.*?/.*?>");Matcher matcher = pattern.matcher(xmlString);//配置是否包含<![CDATA[CNY]]> CDATA 包裹的数据Pattern pattern2 = Pattern.compile("!.*]");Map<String, String> map = new HashMap<>();while(matcher.find()) {//获取键String key = matcher.group().replaceAll(".*/", "");key = key.substring(0, key.length() - 1);Matcher matcher2 = pattern2.matcher(matcher.group());String value = matcher.group().replaceAll("</?.*?>", "");//获取值if(matcher2.find() && !value.equals("DATA")) {value = matcher2.group().replaceAll("!.*\\[", "");value = value.substring(0, value.length() - 2);} map.put(key, value);}System.out.println(map);}}
主要就是要了解正则表达式的懒惰匹配模式用法,
大概就是这样,具体的百度一下
- 微信回调数据处理 (xml --> map)
- JAVA 微信回调XML数据处理
- XML 数据处理
- bit-map海量数据处理
- 海量数据处理-BIT Map
- SQL2005 XML数据处理
- JSP XML 数据处理
- 26_JSP XML 数据处理
- JSP XML 数据处理
- JSP XML 数据处理
- JSP XML 数据处理
- 海量数据处理 Bit-map详解
- XML数据处理技术的应用
- XML数据处理技术的应用
- FLEX quick start XML数据处理
- 使用XML提供数据处理效率
- 海量数据处理集锦与Bit-map详解
- 海量数据处理算法—Bit-Map
- 01_Java基础_第1天(Java概述、环境变量、注释、关键字、标识符、常量)
- 【Android】获取View的截图笔记
- idea的安装使用
- hadoop学习之hadoop技术内幕—— mapreduce 过程详解
- tensorflow中的优化器:优化器Optimizer
- 微信回调数据处理 (xml --> map)
- 跟大师学习系统编程---操作系统加载(3)
- Android开发之高德地图实现定位
- Eclipse下comments注解不一致问题
- mongoDB搭建
- jq-append和appendTo 的区别
- C# 窗体程序后台线程操作窗体控件
- Java sql(1)--防止SQL注入查询
- stm8的bootloader