实现json转map map转xml

记录dom4j  gson实现记录
记录参数配置
基础参数  id、name
数组参数 arr
含有属性的基础参数 po.id
属性参数和命令空间参数: -xmlns    #text表示 基础参数含有属性值需要配置值字段
根元素: root

实现 xml中标签属性的插入 和命令空间属性的插入

测试xml报文如下

<?xml version="1.0" encoding="UTF-8"?>
<root><root xmlns="sss"><arr><name>ca</name><id>1</id></arr><arr><name>cs</name><id>2</id></arr><id>1</id><po><id xml="sasd">1</id><code>AD123</code></po></root>
</root>

json转map 方法

public static Map<String, Object> json2Map(String jsonStr) {Map<String, Object> map = new HashMap<>();ObjectMapper objectMapper = new ObjectMapper();if(jsonStr != null && !"".equals(jsonStr)){//最外层解析try {Map jsonObject = objectMapper.readValue(jsonStr, Map.class);for (Object k : jsonObject.keySet()) {Object v = jsonObject.get(k);//如果内层还是数组的话,继续解析if (v instanceof ArrayList) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Iterator<Map> it = ((ArrayList) v).iterator();while (it.hasNext()) {Map json2 = it.next();list.add(json2Map(objectMapper.writeValueAsString(json2)));}map.put(k.toString(), list);} else {map.put(k.toString(), v);}}} catch (IOException e) {e.printStackTrace();}return map;}else{return null;}}

map转xml

public static String jsonToXml(Object json, String rootKey) {Document document = DocumentHelper.createDocument();//设置根节点和命名空间QName qName = new QName(rootKey);//设置命令空间Element element = document.addElement(qName);document.setRootElement(element);ObjectMapper objectMapper = new ObjectMapper();try {JsonObject jsonObject = new JsonParser().parse(objectMapper.writeValueAsString(json)).getAsJsonObject();toXml(jsonObject, document.getRootElement(), null);return document.asXML();} catch (Exception e) {log.error(e.getMessage());throw new AppException(e.getMessage());}
}private static Element toXml(JsonElement jsonElement, Element parentElement, String name) {if (jsonElement instanceof JsonArray) {//是json数据,需继续解析JsonArray sonJsonArray = (JsonArray)jsonElement;for (int i = 0; i < sonJsonArray.size(); i++) {JsonElement arrayElement = sonJsonArray.get(i);toXml(arrayElement, parentElement, name);}}else if (jsonElement instanceof JsonObject) {//说明是一个json对象字符串,需要继续解析JsonObject sonJsonObject = (JsonObject) jsonElement;Element currentElement = null;if (name != null) {currentElement = parentElement.addElement(name);}Set<Map.Entry<String, JsonElement>> set = sonJsonObject.entrySet();for (Map.Entry<String, JsonElement> s : set) {toXml(s.getValue(), currentElement != null ? currentElement : parentElement, s.getKey());}}else if (jsonElement.isJsonNull()){parentElement.addElement(name);}else {//说明是一个键值对的key,可以作为节点插入了addAttribute(parentElement, name, jsonElement.getAsString());}return parentElement;
}private static void addAttribute(Element element, String name, String value) {//增加子节点,并为子节点赋值if (String.valueOf(name.charAt(0)).equals(StringPool.DASH)){// 参数前为 “-”符号的为节点属性 去除“-”符号并添加属性String key=name.substring(1);if (key.equals("xmlns")){Namespace namespace=new Namespace("",value);QName qName=new QName(element.getName(),namespace);element.setQName(qName);}else {element.addAttribute(key,value);}}else if (StringPool.HASH.equals(String.valueOf(name.charAt(0)))){element.addText(value);}else {Element el = element.addElement(name);el.addText(value);}
}

json-lib实现xml转json 转换根节点为顶级对象
json-lib 如果需要转换json后没有根节点ForceTopLevelObject设为false 反之true
某些场景xml转json后会默认存在o顶级对象节点可以设为false

String xml="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +"<TRN_RESULT xms=\"saasdasd\" xmlns:ceb=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +"  <CUS_CIQ_NO>I20170000000020464</CUS_CIQ_NO>\n" +"  <SP_TRN_SEQ_NO>T11000000075628798</SP_TRN_SEQ_NO>\n" +"  <TRANS_DCL_NO>1701010106500000</TRANS_DCL_NO>\n" +"<BILL_NO>2222</BILL_NO>\n" +"  <RESULT_NTC_DATE>20170612</RESULT_NTC_DATE>\n" +"  <PROC_RESULT>L</PROC_RESULT>\n" +"  <NOTE>海关入库成功</NOTE>\n" +"</TRN_RESULT>";XMLSerializer xmlSerializer = new XMLSerializer();// ForceTopLevelObject默认为falseSystem.out.println(xmlSerializer.isForceTopLevelObject());xmlSerializer.setForceTopLevelObject(true);InputStream stream = new ByteArrayInputStream(xml.getBytes("UTF-8"));JSON json = xmlSerializer.readFromStream(stream);System.out.println(json.toString());

额外记录
mybatisplus StringPool常用符号常量

String AMPERSAND = "&";String AND = "and";String AT = "@";String ASTERISK = "*";String STAR = "*";String BACK_SLASH = "\\";String COLON = ":";String COMMA = ",";String DASH = "-";String DOLLAR = "$";String DOT = ".";String DOTDOT = "..";String DOT_CLASS = ".class";String DOT_JAVA = ".java";String DOT_XML = ".xml";String EMPTY = "";String EQUALS = "=";String FALSE = "false";String SLASH = "/";String HASH = "#";String HAT = "^";String LEFT_BRACE = "{";String LEFT_BRACKET = "(";String LEFT_CHEV = "<";String DOT_NEWLINE = ",\n";String NEWLINE = "\n";String N = "n";String NO = "no";String NULL = "null";String OFF = "off";String ON = "on";String PERCENT = "%";String PIPE = "|";String PLUS = "+";String QUESTION_MARK = "?";String EXCLAMATION_MARK = "!";String QUOTE = "\"";String RETURN = "\r";String TAB = "\t";String RIGHT_BRACE = "}";String RIGHT_BRACKET = ")";String RIGHT_CHEV = ">";String SEMICOLON = ";";String SINGLE_QUOTE = "'";String BACKTICK = "`";String SPACE = " ";String TILDA = "~";String LEFT_SQ_BRACKET = "[";String RIGHT_SQ_BRACKET = "]";String TRUE = "true";String UNDERSCORE = "_";String UTF_8 = "UTF-8";String US_ASCII = "US-ASCII";String ISO_8859_1 = "ISO-8859-1";String Y = "y";String YES = "yes";String ONE = "1";String ZERO = "0";String DOLLAR_LEFT_BRACE = "${";String HASH_LEFT_BRACE = "#{";String CRLF = "\r\n";String HTML_NBSP = "&nbsp;";String HTML_AMP = "&amp";String HTML_QUOTE = "&quot;";String HTML_LT = "&lt;";String HTML_GT = "&gt;";String[] EMPTY_ARRAY = new String[0];byte[] BYTES_NEW_LINE = "\n".getBytes();

后记
Java Json xml 格式之间转换(二) xml报文转java 、json 单标签转json数组处理

Java Json xml 格式之间转换(一)相关推荐

  1. jaxb java xml序列化_XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换...

    (六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML ...

  2. xBIM 格式之间转换

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  3. python中xml格式的转换

    文章目录 python中xml格式的转换 1. 基于DOM. 2. 基于ElementTree 使用dicttoxml xmltodict等模块 1.解析xml文件: 2.字典转换为xml文件: 3. ...

  4. 如何在 Unix 和 DOS 格式之间转换文本文件

    本文介绍如何在 Unix 和 DOS 格式之间转换文本文件.DOS 文本文件带有回车符( \r )和换行符( \n )作为它们的换行符,而 Unix 文本文件只有( \n )换行符作为换行符. 有多种 ...

  5. 读取/书写Java的XML格式properties文件

    转载自  读取/书写Java的XML格式properties文件 在JDK5中,properties文件的格式可以由XML构成,这里给出了一个读取/书写XML格式properties文件的例子. 因为 ...

  6. java xml转html_如何在Java中将XML文档转换成HTML文档.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp网页设计/UI 如何在Java中将XML文档转换成HTML文档. ...

  7. JAXB处理java对象与xml格式之间的转换

    JAXB(Java Architecture for XML Binding)是J2SE和J2EE平台的一部分,让开发者能够快速完成Java类和XML的互相映射.一些具体的介绍和使用可以到此细看:JA ...

  8. Java JSON字符串格式解析,数组取值

    //使用的是阿里的 fastjson 包 <dependency><groupId>com.alibaba</groupId><artifactId>f ...

  9. Spring MVC同一方法返回JSON/XML格式

    最近一道面试题,要求同一API接口支持不同格式返回值.一开始是设想通过过滤器(Filter)设置返回值,但是并不可行,因为方法返回值一般都是类型需要做转换,而过滤器则是前置的.另一方面可以通过拦截器的 ...

  10. java验证xml格式是否正确的是_spring源码附录(1)java实现对XML格式的验证

    最近在看spring源码,涉及到xml文档的解析.xml文档的格式验证,发现自己对xml解析的基础较为薄弱,本篇博客复习下DOM方式解析xml(即spring解析xml的方式). DOM解析XML是将 ...

最新文章

  1. linux内核和cpu指令集,Linux之父:Intel别浪费时间在AVX512这类指令集、多堆核心才是正道...
  2. 需要掌握的数学知识(待补充)
  3. vb.net2019-多线程并行计算(2)
  4. 以太坊测试链环境node.js版本
  5. 迁移到其他机器_有赞大数据离线集群迁移实战
  6. 在 phpMyAdmin 里添加新用户帐号
  7. Linux命令的学习(目前需要的,紧急)
  8. sob攻略超详细攻略_2020云南旅游超详细必看攻略(附带云南美食景点攻略)
  9. sql_action
  10. 微信看一看强化学习推荐模型的知识蒸馏探索之路丨CIKM 2021
  11. oracle创建默认序列号,PLS-00103:为序列号oracle创建触发器(PLS-00103: Create trigger for sequence number oracle)...
  12. C语言编译出现首值缪,TP312C-C语言程序设计 武马群.pdf
  13. 简述:bs和cs的区别
  14. 用python画猫咪怎么画-python画猫
  15. PCB硬件设计规范(详细版)
  16. 西电2021计算机考研大纲,2021年西安电子科技大学硕士研究生833计算机学科专业基础综合考试大纲...
  17. 2021届校招求职计划、总结
  18. 【期末大作业】简单的学生网页作业源码 基于html css javascript南京大学网页校园教育网站html模板(3页)
  19. 手撕BP网络,你值得拥有!
  20. 独家|电竞数据化:英雄联盟总决赛也靠它

热门文章

  1. 贴片SMD制作PCB封装详细设计规范和步骤
  2. 2021年9月全国计算机考试准考证下载详细流程~
  3. GitHub添加SSH-key的步骤
  4. Android Framework源码阅读计划
  5. 华为 静态路由与FTP备份
  6. android 暗黑模式项目适配过程
  7. 都2021年了,不会还有人连深度学习都不了解吧(七)- 评估指标篇
  8. c语言课件谭浩强ppt下载,c语言课件谭浩强
  9. 区块链学习之《区块链技术指南》读书笔记
  10. 关于idea中运行maven项目报错显示找不到包或符号的问题——终极方案