在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. 脚本 script 常用脚本

    目录 remove_all_pyc find_all_links rename_with_slice load_json_without_dupes execution_time benchmark_ ...

  2. codeforces 303C. Minimum Modular(数论+暴力+剪枝+贪心)

    You have been given n distinct integers a1, a2, ..., an. You can remove at most k of them. Find the ...

  3. 【转】cpu的核心数与线程数的关系

    原文地址:http://www.dn580.com/dnzs/dncs/2013/10/08/172948914.html 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能 ...

  4. jspSmartUpload上传下载使用例子

    --------------------------------------------------------------------- ServletUpload.java 上传 package ...

  5. document,element,dom对象api详解

    Document对象: 根元素的访问,也就是HTML标签的访问.使用document.documentElement访问根对象. 使用Document对象查找对象 getElementById():通 ...

  6. exception = {"元数据集合中已存在具有标识“xxx”的项。\r\n参数名: item"}

    vs提示:exception = {"元数据集合中已存在具有标识"xxx"的项.\r\n参数名: item"} 出现这个错误说明有重复的字段,有可能是继承的类里 ...

  7. python爬虫 妹子图片网

    代码如下 #coding=utf-8 import os import re import urllib from time import sleep import requests from lxm ...

  8. 读取游标 BEGIN END

    USE db_2008 --引入数据库 DECLARE ReadCursor CURSOR --声明一个游标 FOR SELECT * FROM Student OPEN ReadCursor --打 ...

  9. QT分析之QApplication的初始化

    原文地址:http://blog.163.com/net_worm/blog/static/1277024192010097430321/ 在开始分析之前交代一下,一是分析的QT在Window平台实现 ...

  10. 第23天:js-数据类型转换

    一.padding1.内边距会影响盒子大小2.行内元素,尽量不用上下的padding和margin3.块元素嵌套块元素.子级会继承父级的宽度,高度由内容决定.如果给子级再设置padding,不会影响盒 ...