pom.xml引入的jar

xml解析使用dom4j

        <!--xml解析--><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.36</version></dependency>

1.创建xml转json工具类XmlToJsonUtil.java

package com.example.gxy.utils;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.*;import java.util.List;/*** @ClassName XmlToJsonUtil* @Author gxy* @Desc xml转json*/
public class XmlToJsonUtil {private XmlToJsonUtil(){}/*** xml转json** @param xmlStr* @return* @throws DocumentException*/public static JSONObject xml2Json(String xmlStr) {Document doc = null;try {doc = DocumentHelper.parseText(xmlStr);} catch (DocumentException e) {e.printStackTrace();}JSONObject json = new JSONObject();dom4j2Json(doc.getRootElement(), json);return json;}/*** xml转json** @param element* @param json*/private static void dom4j2Json(Element element, JSONObject json) {// 如果是属性for (Object o : element.attributes()) {Attribute attr = (Attribute) o;if (StringUtils.isNotBlank(attr.getValue())) {json.put("@" + attr.getName(), attr.getValue());}}List<Element> chdEl = element.elements();if (chdEl.isEmpty() && StringUtils.isNotBlank(element.getText())) {// 如果没有子元素,只有一个值json.put(element.getName(), element.getText());}for (Element e : chdEl) {// 有子元素if (!e.elements().isEmpty()) {// 子元素也有子元素JSONObject chdjson = new JSONObject();dom4j2Json(e, chdjson);Object o = json.get(e.getName());if (o != null) {JSONArray jsona = null;if (o instanceof JSONObject) {// 如果此元素已存在,则转为jsonArrayJSONObject jsono = (JSONObject) o;json.remove(e.getName());jsona = new JSONArray();jsona.add(jsono);jsona.add(chdjson);}if (o instanceof JSONArray) {jsona = (JSONArray) o;jsona.add(chdjson);}json.put(e.getName(), jsona);} else {if (!chdjson.isEmpty()) {json.put(e.getName(), chdjson);}}} else {// 子元素没有子元素for (Object o : element.attributes()) {Attribute attr = (Attribute) o;if (StringUtils.isNotBlank(attr.getValue())) {json.put("@" + attr.getName(), attr.getValue());}}if (!e.getText().isEmpty()) {json.put(e.getName(), e.getText());}}}}
}

2.测试

xml文件

<?xml version="\&quot;1.0\&quot;" encoding="\&quot;utf-8\&quot;"?>
<res><header><msgId>0000211</msgId><hdlSts>A</hdlSts><bdFlg>0</bdFlg></header><body><qrOvertimeFlag>Y</qrOvertimeFlag><orderTrans><tranSeq>66807478</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId></custTranId><tranCode>01</tranCode><tranTime>20190704134549</tranTime><tranAmount>0.01</tranAmount><tranStatus>1</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807491</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190704163313</tranTime><tranAmount>0.01</tranAmount><tranStatus>2</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807492</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190704163414</tranTime><tranAmount>0.01</tranAmount><tranStatus>2</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807495</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190705092338</tranTime><tranAmount>0.01</tranAmount><tranStatus>1</tranStatus><unionPaySeq></unionPaySeq></orderTrans></body>
</res>

main方法调用

    public static void main(String[] args) {String returnObj ="<?xml version=\"1.0\" encoding=\"utf-8\" ?><res><header><msgId>0000211</msgId><hdlSts>A</hdlSts><bdFlg>0</bdFlg></header><body><qrOvertimeFlag>Y</qrOvertimeFlag><orderTrans><tranSeq>66807478</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId></custTranId><tranCode>01</tranCode><tranTime>20190704134549</tranTime><tranAmount>0.01</tranAmount><tranStatus>1</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807491</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190704163313</tranTime><tranAmount>0.01</tranAmount><tranStatus>2</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807492</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190704163414</tranTime><tranAmount>0.01</tranAmount><tranStatus>2</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807495</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190705092338</tranTime><tranAmount>0.01</tranAmount><tranStatus>1</tranStatus><unionPaySeq></unionPaySeq></orderTrans></body></res>";JSONObject jsonObject1 = XmlToJsonUtil.xml2Json(returnObj);System.out.println(jsonObject1);}

3.结果

{"header":{"msgId":"0000211","hdlSts":"A","bdFlg":"0"},"body":{"orderTrans":[{"tranSeq":"66807478","tranTime":"20190704134549","orderNo":"2439665","tranCode":"01","tranAmount":"0.01","merchantNo":"104320553990088","tranStatus":"1"},{"tranSeq":"66807491","tranTime":"20190704163313","orderNo":"2439665","custTranId":"1043205539900882439665","tranCode":"06","tranAmount":"0.01","merchantNo":"104320553990088","tranStatus":"2"},{"tranSeq":"66807492","tranTime":"20190704163414","orderNo":"2439665","custTranId":"1043205539900882439665","tranCode":"06","tranAmount":"0.01","merchantNo":"104320553990088","tranStatus":"2"},{"tranSeq":"66807495","tranTime":"20190705092338","orderNo":"2439665","custTranId":"1043205539900882439665","tranCode":"06","tranAmount":"0.01","merchantNo":"104320553990088","tranStatus":"1"}],"qrOvertimeFlag":"Y"}
}

复杂的xml也能转成功,很棒!!!

java:xml数据转json相关推荐

  1. java excel数据组装json成数据

    java excel数据组装json成数据 客户提供excel数据,androdi app是离线的,所以考虑将数据组装成json数据放到assets目录下面. 首先需要去下载pio的包,文章末尾我会放 ...

  2. mysql xml字段转json格式_mysql将xml数据或者json数据转换为表格。

    我需要将一个xml的数据或者json数据的字符串转化为一个mysql中的表格形式. json_extract函数只能处理单个json数据,无法处理json数组,ExtractValue函数取出来的数据 ...

  3. java xml数据解析_java xml解析,数据读取

    xml格式<?xmlversion ="1.0"encoding="UTF-8"?> xml格式 32 寺坡镇管理员 202cb962ac59075 ...

  4. Java xml字符串转json

    使用net.sf.json包将xml字符串转为JSONObject: 引入maven依赖: <dependency><groupId>net.sf.json-lib</g ...

  5. soap协议的xml数据转json

    import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.jso ...

  6. [Java中将数据转JSON]

    1.将List集合数据转成JSON JSONObject merchantJson = new JSONObject(); JSONArray merchantList= JSONArray.pars ...

  7. 【XML】Java对象数据的XML和JSON表示

    XML与JSON 本文主要是基于之前的一份Java代码,根据合理数据(下面的链接中有),设计对应的XML格式和JSON格式的存储表示,并使用工具对其合法性加以验证. JavaCode 先看Java的代 ...

  8. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  9. java中怎么使用json数据_JAVA中使用JSON进行数据传递

    1.是不是只有xml传递数据的技术才是webservice? 可以这么理解.webservice是基于SOAP协议,SOAP协议是基于XML的文本协议.所以webservice可以简单理解为是基于XM ...

  10. java xml特殊字符转义_Java中将xml文件转化为json遇到特殊字符会报错!

    前言: 我们在项目开发中,有时候调用别人提供的接口,接收到的数据是xml,这时候为了方便后续开发中的使用,需要解析xml并把数据转化成json,今天这篇文章就讲解下如何把xml转化成json,并在这个 ...

最新文章

  1. 通过anaconda2安装python2.7和安装pytorch
  2. 如何让ie 7 支持box-shadow
  3. 使用pytorch构建一个神经网络、损失函数、反向传播、更新网络参数
  4. react native引入第三方库
  5. 奇葩的UI引用LayoutInflater.from问题
  6. JAVA异常-面试题
  7. 活用这25种图表效果,你的数据可视化也能变得高级炫酷!
  8. linux命令 选项,Linux常用命令及选项
  9. 1、java 的安装及资料下载
  10. 淘宝APP购物车测试用例
  11. STM32利用DCMI对并口ADC高速数据采样
  12. 手披云雾开鸿蒙,赞美泰山的诗句
  13. 【转】伽利略卫星导航定位系统
  14. 非常全面的前端协作规范
  15. 【掘金 - 自动签到功能的实现】 - 让我们使用【ios/iphone 快捷指令自动化】实现一个社区每天自动签到小脚本
  16. 照片画质修复,模糊图片修复成高清画质
  17. 【DB】数据库面试笔试题库及详解(小麦苗DBA宝典出品)--数据库运维宝典
  18. 越狱苹果手机导出网易云音乐歌曲(以及缓存文件转换)
  19. 大数据的主要学习内容有哪些?
  20. Hold不住的老师 HNUST 1588

热门文章

  1. 小旋风万能蜘蛛池 小霸王蜘蛛池快速收录源码
  2. 关于Linux 系统程序(进程)自动升级的方法
  3. Ubuntu 开机自动运行命令或程序
  4. cp: cannot create regular file ‘/root/queues.conf’: No space left on devic
  5. 敏捷与CMMI的同与不同
  6. win10计算机管理看不见蓝牙,win10蓝牙不见了的解决方法
  7. JPEG文件编/解码详解
  8. 铺捉factoryreset的事件 ---转载
  9. LeetCode 105. 从前序与中序遍历序列构造二叉树(dfsdfs、边界判定情况、做一题送一题)
  10. 机房收费系统可行性研究报告