在JAVA中xml与json数据互相转换

package com.sgcc.platform.common.utils;

import static java.lang.String.format;

import java.util.Map;

import org.json.JSONObject;
import org.json.XML; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.sgcc.platform.common.exceptions.ConvertException; /**
* json,xml互相转换
* @author libing
*
*/
public class JsonXmlUtil {
private static JacksonXmlModule module = new JacksonXmlModule();
private static ObjectMapper objectMapper = new ObjectMapper();
private static XmlMapper xmlMapper = new XmlMapper(module);
static{
//去掉xml顶部内容<?xml version="1.0" encoding="UTF-8" ?>
module.setDefaultUseWrapper(false);
} /**
* xml字符串转换成net.sf.json.JSONObject对象
* @param xmlStr
* @return
*/
public static JSONObject xml2jsonObj(String xmlStr){
JSONObject jsonObject = XML.toJSONObject(xmlStr);
return jsonObject;
} /**
* xml字符串转换成json字符串
* @param xmlStr
* @return
*/
public static String xml2jsonStr(String xmlStr){
JSONObject jsonObject = XML.toJSONObject(xmlStr);
return jsonObject.toString();
} /**
* json字符串转换成xml字符串
* @param jsonStr
* @return
*/
public static String json2xml(String jsonStr){
try {
JsonNode root = objectMapper.readTree(jsonStr);
String result = xmlMapper.writeValueAsString(root);
return result.replaceAll("</?ObjectNode>","");
} catch (Exception e) {
throw new ConvertException(format("incorrect JSON data:/n%s",jsonStr));
}
} /**
* map数据转换成xml字符串
* @param mapData
* @return
*/
public static String map2xml(Map<String,Object> mapData){
Object repinfoJsonObj = JSONObject.wrap(mapData);
String jsonStr=repinfoJsonObj.toString();
String result=json2xml(jsonStr);
return result;
} // public static void main(String[] args) throws Exception {
// String ss="{\"REPINFO\":{\"SITEDATA\":[{\"SITE_NAME\":\"有没 \",\"REMARK\":null,\"MEASCODE\":35,\"SITE_ID\":2},{\"SITE_NAME\":\"城\",\"REMARK\":null,\"MEASCODE\":35,\"SITE_ID\":3}]}}";
// System.out.println(json2xml(ss));
//
// }
}

Java中xml2json,json2xml的更多相关文章

  1. java中的锁

    java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...

  2. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  3. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  4. java中Action层、Service层和Dao层的功能区分

    Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...

  5. Java中常用集合操作

    一.Map 名值对存储的. 常用派生类HashMap类 添加: put(key,value)往集合里添加数据 删除: clear()删除所有 remove(key)清除单个,根据k来找 获取: siz ...

  6. java中的移位运算符:<<,>>,>>>总结

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  7. 关于Java中进程和线程的详解

    一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...

  8. Java中的进程和线程

     Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是 ...

  9. Java中的进程与线程(总结篇)

    详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...

随机推荐

  1. Python3 Tkinter-Spinbox

    1.创建 from tkinter import * root=Tk() Spinbox(root).pack() root.mainloop() 2.参数 from_    最小值 to    最大 ...

  2. 三:QJM HDFS高可用

    本文介绍的是HDFS的一种HA方案.虽然有checkpoint node \backup node等,但是不能实现自动的failover. http://hadoop.apache.org/docs/ ...

  3. Python中的print

    Python 3.X的print 在Python 3.X中,print是一个内置函数,完整的声明形式如下: print([object, ...][, sep=' '][, end='\n'][, f ...

  4. CSS3制作各种形状图像(转)

    CSS3制作各种形状图像 浏览:1417 | 更新:2015-05-24 14:43 | 标签:css 1 2 3 4 5 6 7 分步阅读 圆形-椭圆形-三角形-倒三角形=左三角形-右三角形-菱形- ...

  5. POJ 2229 计数DP

    dp[i]代表是数字i的最多组合数如果i是一个奇数,i的任意一个组合都包含1,所以dp[i] = dp[i-1] 如果i是一个偶数,分两种情况讨论,一种是序列中包含1,因此dp[i]=dp[i-1]一 ...

  6. 项目UML设计--日不落战队

    [团队信息] 团队项目: 小葵日记--主打记录与分享模式的日记app 队名:日不落战队 队员信息及贡献分比例: 短学号 名 本次作业博客链接 此次作业任务 贡献分配 备注 501 安琪 http:// ...

  7. 一个项目的Makefile编写及调试

    父Makefile 在src目录下包含很多文件夹,那么需要遍历所有的目录执行Makefile,那么给一个在src目录下的Makefile. # 需要排除的目录 exclude_dirs := incl ...

  8. java-实用的sql语句

    一.在数据库创建表格的SQL语句 1,创建一个link表格,包含属性:lid  主键,title 标题,  imgpath 图片地址 , url  网址  , info 说明,  isshow 显示1 ...

  9. Ubuntu 删除多余内核

    Ubuntu 删除多余内核 转载▼ 首先查询当前我们使用的是内核是那个版本别删错了. uname -a 第二: 查询系统中装了多少内核 dpkg --get-selections|grep linux ...

  10. 将下载到本地的JAR包手动添加到Maven仓库(转)

    常用Maven仓库网址:http://mvnrepository.com/http://search.maven.org/http://repository.sonatype.org/content/ ...