java转换xml、list、map和json

java转换xml、list、map和json

[java] view plaincopy

  1. package com.shine.framework.core.util;
  2. import java.io.ByteArrayOutputStream;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import java.util.Map;
  8. import net.sf.json.JSON;
  9. import net.sf.json.JSONSerializer;
  10. import net.sf.json.xml.XMLSerializer;
  11. import org.dom4j.Document;
  12. import org.dom4j.DocumentHelper;
  13. import org.dom4j.Element;
  14. import org.dom4j.io.OutputFormat;
  15. import org.dom4j.io.XMLWriter;
  16. /**
  17. * common xml conver utility
  18. *
  19. * @author [email protected]
  20. * @version Framework 2010.10.26
  21. * @url http://blog.csdn.net/arjick/article/details/6251777
  22. */
  23. public class XmlConverUtil {
  24. /**
  25. * map to xml xml <node><key label="key1">value1</key><key
  26. * label="key2">value2</key>......</node>
  27. *
  28. * @param map
  29. * @return
  30. */
  31. public static String maptoXml(Map map) {
  32. Document document = DocumentHelper.createDocument();
  33. Element nodeElement = document.addElement("node");
  34. for (Object obj : map.keySet()) {
  35. Element keyElement = nodeElement.addElement("key");
  36. keyElement.addAttribute("label", String.valueOf(obj));
  37. keyElement.setText(String.valueOf(map.get(obj)));
  38. }
  39. return doc2String(document);
  40. }
  41. /**
  42. * list to xml xml <nodes><node><key label="key1">value1</key><key
  43. * label="key2">value2</key>......</node><node><key
  44. * label="key1">value1</key><key
  45. * label="key2">value2</key>......</node></nodes>
  46. *
  47. * @param list
  48. * @return
  49. */
  50. public static String listtoXml(List list) throws Exception {
  51. Document document = DocumentHelper.createDocument();
  52. Element nodesElement = document.addElement("nodes");
  53. int i = 0;
  54. for (Object o : list) {
  55. Element nodeElement = nodesElement.addElement("node");
  56. if (o instanceof Map) {
  57. for (Object obj : ((Map) o).keySet()) {
  58. Element keyElement = nodeElement.addElement("key");
  59. keyElement.addAttribute("label", String.valueOf(obj));
  60. keyElement.setText(String.valueOf(((Map) o).get(obj)));
  61. }
  62. } else {
  63. Element keyElement = nodeElement.addElement("key");
  64. keyElement.addAttribute("label", String.valueOf(i));
  65. keyElement.setText(String.valueOf(o));
  66. }
  67. i++;
  68. }
  69. return doc2String(document);
  70. }
  71. /**
  72. * json to xml {"node":{"key":{"@label":"key1","#text":"value1"}}} conver
  73. * <o><node class="object"><key class="object"
  74. * label="key1">value1</key></node></o>
  75. *
  76. * @param json
  77. * @return
  78. */
  79. public static String jsontoXml(String json) {
  80. try {
  81. XMLSerializer serializer = new XMLSerializer();
  82. JSON jsonObject = JSONSerializer.toJSON(json);
  83. return serializer.write(jsonObject);
  84. } catch (Exception e) {
  85. e.printStackTrace();
  86. }
  87. return null;
  88. }
  89. /**
  90. * xml to map xml <node><key label="key1">value1</key><key
  91. * label="key2">value2</key>......</node>
  92. *
  93. * @param xml
  94. * @return
  95. */
  96. public static Map xmltoMap(String xml) {
  97. try {
  98. Map map = new HashMap();
  99. Document document = DocumentHelper.parseText(xml);
  100. Element nodeElement = document.getRootElement();
  101. List node = nodeElement.elements();
  102. for (Iterator it = node.iterator(); it.hasNext();) {
  103. Element elm = (Element) it.next();
  104. map.put(elm.attributeValue("label"), elm.getText());
  105. elm = null;
  106. }
  107. node = null;
  108. nodeElement = null;
  109. document = null;
  110. return map;
  111. } catch (Exception e) {
  112. e.printStackTrace();
  113. }
  114. return null;
  115. }
  116. /**
  117. * xml to list xml <nodes><node><key label="key1">value1</key><key
  118. * label="key2">value2</key>......</node><node><key
  119. * label="key1">value1</key><key
  120. * label="key2">value2</key>......</node></nodes>
  121. *
  122. * @param xml
  123. * @return
  124. */
  125. public static List xmltoList(String xml) {
  126. try {
  127. List<Map> list = new ArrayList<Map>();
  128. Document document = DocumentHelper.parseText(xml);
  129. Element nodesElement = document.getRootElement();
  130. List nodes = nodesElement.elements();
  131. for (Iterator its = nodes.iterator(); its.hasNext();) {
  132. Element nodeElement = (Element) its.next();
  133. Map map = xmltoMap(nodeElement.asXML());
  134. list.add(map);
  135. map = null;
  136. }
  137. nodes = null;
  138. nodesElement = null;
  139. document = null;
  140. return list;
  141. } catch (Exception e) {
  142. e.printStackTrace();
  143. }
  144. return null;
  145. }
  146. /**
  147. * xml to json <node><key label="key1">value1</key></node> 转化为
  148. * {"key":{"@label":"key1","#text":"value1"}}
  149. *
  150. * @param xml
  151. * @return
  152. */
  153. public static String xmltoJson(String xml) {
  154. XMLSerializer xmlSerializer = new XMLSerializer();
  155. return xmlSerializer.read(xml).toString();
  156. }
  157. /**
  158. *
  159. * @param document
  160. * @return
  161. */
  162. public static String doc2String(Document document) {
  163. String s = "";
  164. try {
  165. // 使用输出流来进行转化
  166. ByteArrayOutputStream out = new ByteArrayOutputStream();
  167. // 使用UTF-8编码
  168. OutputFormat format = new OutputFormat("   ", true, "UTF-8");
  169. XMLWriter writer = new XMLWriter(out, format);
  170. writer.write(document);
  171. s = out.toString("UTF-8");
  172. } catch (Exception ex) {
  173. ex.printStackTrace();
  174. }
  175. return s;
  176. }
  177. }
时间: 2024-12-17 18:24:09

java转换xml、list、map和json的相关文章

自定义类库:Java转换xml文件转化pojo工具

一.之前java读取xml配置文件时,总是通过dom4j第三方库主动解析,最近发现可以通过jdk类库将xml转换pojo. 二.编写xml转化工具类XmlUtils package com.moy.demo.common.utils; import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import java.io.InputStream; import java.io.Reader; import jav

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

原文:http://heipark.iteye.com/blog/1394844 需要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> <classif

Java xml和map,list格式的转换-摘抄

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 java.util.TreeMap; import net.sf.json.JSON; import net.sf.json.JSONSerializer;

xStream转换XML、JSON

一. 简介 xStream可以很容易实现Java对象和xml文档互相转换, 可以修改某个特定的属性和节点名称,xStream提供annotation注解, 可以在JavaBean中完成对xml节点和属性的描述,并支持Json的转换,只需要提供相关的JSONDriver就能完成转换 官方网站: http://xstream.codehaus.org/tutorial.html 二. 准备工作 1. 环境准备: Jar文件下载地址: https://nexus.codehaus.org/conten

xStream完美转换XML、JSON

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 它们都完美支持JSON,但是对xml的支持还不是很好.一定程度上限制了对Java对象的描述,不能让xml完全体现到对Java对象的描述.这里将会介绍xStream对JSON.XML的完美支持.xStream不仅对XML的转换非常友好,而且提供annotation注解,可以在JavaBean中完成对xml节点.属性的描述.以及对JSON也支持,只需要提供

Java对象与JSON互相转换jsonlib以及手动创建JSON对象与数组——(二)

首先声明一下,jsonlib转换与GSON相比太差劲了,操作不是一般的繁琐.GSON可以直接转换成各种集合与对象类型.强烈推荐使用GSON.而且GSON一个方法就可以解决,jsonlib转来转去太繁琐了. 手动创建JSONObject与JSONArray有用,用于读取文件对字符串进行处理 -----------------------------jsonlib操作复杂,转换Map与list<map>更是复杂---------------- Jar包 User.java 1 package Te

X-stream完美转换XML、JSON

一.准备工作 1. 下载jar包.及官方资源 xStream的jar下载地址:https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstream/xstream-distribution/1.3.1/xstream-distribution-1.3.1-bin.zip 官方的示例很全,官方参考示例:http://xstream.codehaus.org/tutorial.html 添加xstream-

JSON以及Java转换JSON的方法

本文主要讲述如下几个内容: 1.JSON定义以及JSON的特性 2.如何在JavaScript中解释JSON格式数据 3.如何在Java代码中使用JSON(讲对象转换成JSON对象以及解释JSON字符串) 一.JSON w3c上对JSON有比较详细的介绍,链接http://www.w3school.com.cn/json/index.asp.下面仅讲述重要的几点. Json是 JavaScript 对象表示法(JavaScript Object Notation),是轻量级的文本数据交换格式,具

xStream完美转换XML、JSON(转)

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 以及Jackson这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html 它们都完美支持JSON,