`
heipark
  • 浏览: 2094913 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)java下XML与JSON互相转换的Utils类

    博客分类:
  • Java
阅读更多

 

转自:http://blog.csdn.net/arjick/article/details/6251777

 

需要json-lib-2.1-jdk15.jar和xom-1.2.5.jar,maven pom.xml如下:

 

		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.1</version>
			<classifier>jdk15</classifier>
		</dependency>

		<dependency>
			<groupId>xom</groupId>
			<artifactId>xom</artifactId>
			<version>1.2.5</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
 

 

package com.shine.framework.core.util;

import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sf.json.JSON; import net.sf.json.JSONSerializer; import net.sf.json.xml.XMLSerializer; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; /** * common xml conver utility * * @author viruscodecn@gmail.com * @version Framework 2010.10.26 * @url http://blog.csdn.net/arjick/article/details/6251777 */ public class XmlConverUtil { /** * map to xml xml <node><key label="key1">value1</key><key * label="key2">value2</key>......</node> * * @param map * @return */ public static String maptoXml(Map map) { Document document = DocumentHelper.createDocument(); Element nodeElement = document.addElement("node"); for (Object obj : map.keySet()) { Element keyElement = nodeElement.addElement("key"); keyElement.addAttribute("label", String.valueOf(obj)); keyElement.setText(String.valueOf(map.get(obj))); } return doc2String(document); } /** * list to xml xml <nodes><node><key label="key1">value1</key><key * label="key2">value2</key>......</node><node><key * label="key1">value1</key><key * label="key2">value2</key>......</node></nodes> * * @param list * @return */ public static String listtoXml(List list) throws Exception { Document document = DocumentHelper.createDocument(); Element nodesElement = document.addElement("nodes"); int i = 0; for (Object o : list) { Element nodeElement = nodesElement.addElement("node"); if (o instanceof Map) { for (Object obj : ((Map) o).keySet()) { Element keyElement = nodeElement.addElement("key"); keyElement.addAttribute("label", String.valueOf(obj)); keyElement.setText(String.valueOf(((Map) o).get(obj))); } } else { Element keyElement = nodeElement.addElement("key"); keyElement.addAttribute("label", String.valueOf(i)); keyElement.setText(String.valueOf(o)); } i++; } return doc2String(document); } /** * json to xml {"node":{"key":{"@label":"key1","#text":"value1"}}} conver * <o><node class="object"><key class="object" * label="key1">value1</key></node></o> * * @param json * @return */ public static String jsontoXml(String json) { try { XMLSerializer serializer = new XMLSerializer(); JSON jsonObject = JSONSerializer.toJSON(json); return serializer.write(jsonObject); } catch (Exception e) { e.printStackTrace(); } return null; } /** * xml to map xml <node><key label="key1">value1</key><key * label="key2">value2</key>......</node> * * @param xml * @return */ public static Map xmltoMap(String xml) { try { Map map = new HashMap(); Document document = DocumentHelper.parseText(xml); Element nodeElement = document.getRootElement(); List node = nodeElement.elements(); for (Iterator it = node.iterator(); it.hasNext();) { Element elm = (Element) it.next(); map.put(elm.attributeValue("label"), elm.getText()); elm = null; } node = null; nodeElement = null; document = null; return map; } catch (Exception e) { e.printStackTrace(); } return null; } /** * xml to list xml <nodes><node><key label="key1">value1</key><key * label="key2">value2</key>......</node><node><key * label="key1">value1</key><key * label="key2">value2</key>......</node></nodes> * * @param xml * @return */ public static List xmltoList(String xml) { try { List<Map> list = new ArrayList<Map>(); Document document = DocumentHelper.parseText(xml); Element nodesElement = document.getRootElement(); List nodes = nodesElement.elements(); for (Iterator its = nodes.iterator(); its.hasNext();) { Element nodeElement = (Element) its.next(); Map map = xmltoMap(nodeElement.asXML()); list.add(map); map = null; } nodes = null; nodesElement = null; document = null; return list; } catch (Exception e) { e.printStackTrace(); } return null; } /** * xml to json <node><key label="key1">value1</key></node> 转化为 * {"key":{"@label":"key1","#text":"value1"}} * * @param xml * @return */ public static String xmltoJson(String xml) { XMLSerializer xmlSerializer = new XMLSerializer(); return xmlSerializer.read(xml).toString(); } /** * * @param document * @return */ public static String doc2String(Document document) { String s = ""; try { // 使用输出流来进行转化 ByteArrayOutputStream out = new ByteArrayOutputStream(); // 使用UTF-8编码 OutputFormat format = new OutputFormat(" ", true, "UTF-8"); XMLWriter writer = new XMLWriter(out, format); writer.write(document); s = out.toString("UTF-8"); } catch (Exception ex) { ex.printStackTrace(); } return s; } }

 

-- heipark

 

 

 

分享到:
评论
1 楼 ipodao 2014-12-25  
您好,我在运用XMltoJson时,解析的数据的位置是不正确的,而且里面含有大量的‘@’符号,难道用Dom4j写的XMltoJson就没有吗?

相关推荐

    JAVA 音频文件PCM转WAV Utils类

    总之,"JAVA 音频文件PCM转WAV Utils类"是Java音频处理领域的一个实用工具,它简化了音频格式转换的过程,使得开发人员可以更方便地在不同音频格式之间进行转换,特别是在需要从基本的PCM数据创建WAV文件的场合。

    json-utils最新代码

    json-utils最新代码json-utils最新代码json-utils最新代码json-utils最新代码json-utils最新代码json-utils最新代码json-utils最新代码json-utils最新代码json-utils最新代码json-utils最新代码json-utils最新代码...

    JSON对象转换工具类

    为了方便地进行JSON与Java对象之间的转换,通常会封装一个JSON工具类。本文将详细介绍一个名为`JsonUtils`的工具类,它提供了两个主要功能:一是将JSON字符串转换为指定类型的Java对象;二是将Java对象转换为JSON...

    FLEX操作XML&JSON

    1. **解析JSON**:Flex使用`flash.utils.parseJSON()`函数将JSON字符串转换为ActionScript对象,便于操作。例如,`var jsonData:Object = flash.utils.parseJSON(jsonString);` 2. **展示JSON数据**:与XML类似,`...

    java工具类 utils.zip

    "java工具类 utils.zip" 提供了一系列实用的工具类,涵盖了日期处理、字符串操作、JSON解析、Spring Bean操作、加密解密、Base64编码、图像处理、随机数生成以及正则表达式等多个方面。下面我们将逐一探讨这些工具类...

    javautils一些工具类

    类型转换在Java中并不总是直截了当的,JavaUtils可能会包含一些帮助转换数据类型的方法,如字符串转数字、对象强制转换等。 8. **验证与校验**: 这些工具类可能提供对输入数据的验证服务,如检查邮箱格式、手机...

    Java解析XML工具类--(java源码)

    * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...

    JAVA wav转PCM Utils代码工具类

    `JAVA wav转PCM Utils代码工具类`提供了这样的功能,使得开发者能够便捷地进行音频格式的转换。以下是对这个工具类的详细说明: ### WAV格式 WAV是一种无损音频文件格式,由Microsoft开发,广泛用于Windows平台。它...

    java utils 工具类

    JavaUtils工具类是Java开发中常见的一类辅助代码集合,它们通常包含各种静态方法,用于简化常见的编程任务,提高开发效率。这篇博文链接(已提供但无法直接访问)可能详细探讨了JavaUtils工具类的设计原则、常用方法...

    json-utils.py

    json_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_utils.pyjson_...

    纯javascript实现json与对象的互相转换项目

    这个项目专注于使用纯JavaScript来实现JSON与JavaScript对象之间的转换,这对于数据传输、存储以及在前端和后端之间进行通信至关重要。 首先,我们需要理解JSON的基本结构。JSON是一种文本格式,主要由键值对组成,...

    java-property-utils-1.9.1.jar,java-property-utils-1.10.jar

    Java Property Utils是Java开发中的一个实用工具库,主要用于处理和操作Java系统属性和配置文件。在给定的场景中,`java-property-utils-1.9.1.jar` 和 `java-property-utils-1.10.jar` 是这个库的两个不同版本,...

    redis utils 工具类

    Redis Utils工具类是Java开发中常见的一种封装,用于简化与Redis数据库的交互操作。Redis是一种高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。在Java开发中,为了提高代码的可读性和复用...

    Flex Demo XML JSON

    2. **JSON支持**:Flex也内置了对JSON的支持,通过`flash.utils.parseJSON(jsonString)`函数可以将JSON字符串转换为ActionScript对象。相反,`ObjectUtil.toString()`方法可以将ActionScript对象转换为JSON字符串。...

    Android list转json工具类

    Gson是Google开发的一个用于在Java对象和JSON数据之间进行映射的Java库,它可以将任何Java对象转换为JSON字符串,反之亦然。以下是使用Gson进行List到JSON转换的基本步骤: 1. 引入Gson库:在build.gradle文件中...

    javautils工具类

    在具体实践中,"javautils工具类"可能还包含了其他通用的辅助功能,如日期时间转换、字符串操作、文件操作等。这些工具方法使得开发者能够专注于业务逻辑,而不是重复编写基础功能的代码。 总之,"javautils工具类...

    Base64Utils java工具类

    Base64Utils java工具类

    这些年整理的一些常用Utils工具类 , 希望对大家开发有所裨益

    - 数据序列化和反序列化:将Java对象转换为XML或JSON格式,反之亦然。 13. **加密解密Utils**: - 加密算法:如MD5、SHA、AES等,保护敏感信息。 14. **ExcelUtils**: - Excel文件操作:读取、写入Excel数据,...

    Open xml utils

    6. **宏和VBA集成**:虽然Open XML是无代码的,但Open XML Utils也可以帮助处理文档中的VBA宏,允许在不打开Office应用程序的情况下进行宏的编辑和管理。 7. **版本兼容性**:Open XML Utils通常会确保与不同版本的...

Global site tag (gtag.js) - Google Analytics