博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dom4j解析xml的简单实用
阅读量:5967 次
发布时间:2019-06-19

本文共 2295 字,大约阅读时间需要 7 分钟。

hot3.png

我们拿支付宝对账的订单来解析。

120848_AcHJ_1471190.png

上面的截图是,支付宝对账结果的一部分数据。下面我写下具体的代码:

private Map
 xmlToMap(InputStream inputStream){    Map
 resultMap = new HashMap
();    SAXReader reader = new SAXReader();    List
 accountQueryAccountLogVOs = new ArrayList
();    try {        org.dom4j.Document doc = reader.read(inputStream);        //获取alipay节点以下的所有子节点        List
 nodeList = doc.selectNodes("//alipay/*");        for (Node node : nodeList) {            String nodeName = node.getName();            //判断是否有成功标示            if ("is_success".equals(nodeName) && node.getText().equals("T")) {                //解析响应的内容信息                List
 tempList = doc.selectNodes("//response/account_page_query_result/*");                if (tempList != null && tempList.size() > 0) {                    for (Node node1 : tempList) {                        String tempNodeName = node1.getName();                        String tempNodeText = node1.getText();                        if ("has_next_page".equals(tempNodeName)) {                            LOGGER.debug("是否有下一页:{}", "T".equals(tempNodeText) ? true : false);                            resultMap.put("has_next_page", "T".equals(tempNodeText) ? true : false);                        }                        if ("page_no".equals(tempNodeName)) {                            LOGGER.debug("当前页码:{}", tempNodeText);                            resultMap.put("page_no", tempNodeText);                        }                        if ("page_size".equals(tempNodeName)) {                            LOGGER.debug("每页显示条数:{}", tempNodeText);                        }                        if ("account_log_list".equals(tempNodeName)) {                            List
 accountLogs = node1.selectNodes("AccountQueryAccountLogVO");                            for (Node accountLog : accountLogs) {                                AccountQueryAccountLogVO accountQueryAccountLogVO = new AccountQueryAccountLogVO();                                //商户订单号                                String merchant_out_order_no = accountLog.selectSingleNode("merchant_out_order_no").getText();                                //支付宝交易号                                String trade_no = accountLog.selectSingleNode("trade_no").getText();                                //只匹配客户端充值的信息                                if (pattern.matcher(trade_no).matches()) {                                    //todo                                }                                if (StringUtils.isNoneBlank(merchant_out_order_no)) {                                    accountQueryAccountLogVO.setMerchant_out_order_no(merchant_out_order_no);                                }                                if (StringUtils.isNotBlank(trade_no)) {                                    accountQueryAccountLogVO.setTrade_no(trade_no);                                }                                accountQueryAccountLogVOs.add(accountQueryAccountLogVO);                            }                            resultMap.put("rows", accountQueryAccountLogVOs);                        }                    }                }            }        }    } catch (Exception e) {        LOGGER.error("解析遇到bug{}", e.getMessage());    }    LOGGER.debug("==============解析xml结束,共收集客户端账单条数:{}", accountQueryAccountLogVOs.size());    return resultMap;}

转载于:https://my.oschina.net/kkrgwbj/blog/653545

你可能感兴趣的文章
ASP.NET 运行机制详解
查看>>
C++ little errors , Big problem
查看>>
在 ML2 中配置 OVS vlan network - 每天5分钟玩转 OpenStack(136)
查看>>
Selenium2+python自动化34-获取百度输入联想词
查看>>
【★★★★★】提高PHP代码质量的36个技巧
查看>>
如何解决/home/oracle: is a directory报警
查看>>
python基础学习笔记(九)
查看>>
BaaS API 设计规范
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>
iOS开发UI篇—Quartz2D使用(矩阵操作)
查看>>
PostgreSQL 如何实现网络压缩传输或加密传输(openssl)
查看>>
Markdown 语法
查看>>
Apache Rewrite实现URL的跳转和域名跳转
查看>>
音频 m4a 转 wav
查看>>
MySQL深入02-DML之Select查询
查看>>
Java判断平台为32位或64位,载入对应DLL
查看>>
Bash 一些变量的操作
查看>>
Fedora 17 Beta is declared GOLD.
查看>>
[转]python中去掉字符串中的\xa0、\t、\n
查看>>
bboss_spring_struts2_myibatis对比分析
查看>>