标签: XML转Json json
2014-05-20 20:55 6568人阅读 评论(6) 收藏 举报
 分类:
【J2SE基础】(20) 

代码如下所示,从这个例子中发现了代码库的重要性,如果建立一个自己的代码库,就可以直接从自己的代码库中取出来,这样需要什么就可以随时的取出来.代码库要保证的是规范性和正确性,并且有简单的模块注释.

这是今天在网上找到的XML转json格式的代码,人家封装的很快,节省了我很多时间啊.

  1. import java.io.ByteArrayInputStream;
  2. import java.io.File;
  3. import java.io.InputStream;
  4. import java.util.HashMap;
  5. import java.util.LinkedList;
  6. import java.util.List;
  7. import java.util.Map;
  8. import net.sf.json.JSONObject;
  9. import org.jdom.Document;
  10. import org.jdom.Element;
  11. import org.jdom.input.SAXBuilder;
  12. public class Xml2JsonUtil {
  13. /**
  14. * 转换一个xml格式的字符串到json格式
  15. *
  16. * @param xml
  17. *            xml格式的字符串
  18. * @return 成功返回json 格式的字符串;失败反回null
  19. */
  20. @SuppressWarnings("unchecked")
  21. public static  String xml2JSON(String xml) {
  22. JSONObject obj = new JSONObject();
  23. try {
  24. InputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));
  25. SAXBuilder sb = new SAXBuilder();
  26. Document doc = sb.build(is);
  27. Element root = doc.getRootElement();
  28. obj.put(root.getName(), iterateElement(root));
  29. return obj.toString();
  30. } catch (Exception e) {
  31. e.printStackTrace();
  32. return null;
  33. }
  34. }
  35. /**
  36. * 转换一个xml格式的字符串到json格式
  37. *
  38. * @param file
  39. *            java.io.File实例是一个有效的xml文件
  40. * @return 成功反回json 格式的字符串;失败反回null
  41. */
  42. @SuppressWarnings("unchecked")
  43. public static String xml2JSON(File file) {
  44. JSONObject obj = new JSONObject();
  45. try {
  46. SAXBuilder sb = new SAXBuilder();
  47. Document doc = sb.build(file);
  48. Element root = doc.getRootElement();
  49. obj.put(root.getName(), iterateElement(root));
  50. return obj.toString();
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. return null;
  54. }
  55. }
  56. /**
  57. * 一个迭代方法
  58. *
  59. * @param element
  60. *            : org.jdom.Element
  61. * @return java.util.Map 实例
  62. */
  63. @SuppressWarnings("unchecked")
  64. private static Map  iterateElement(Element element) {
  65. List jiedian = element.getChildren();
  66. Element et = null;
  67. Map obj = new HashMap();
  68. List list = null;
  69. for (int i = 0; i < jiedian.size(); i++) {
  70. list = new LinkedList();
  71. et = (Element) jiedian.get(i);
  72. if (et.getTextTrim().equals("")) {
  73. if (et.getChildren().size() == 0)
  74. continue;
  75. if (obj.containsKey(et.getName())) {
  76. list = (List) obj.get(et.getName());
  77. }
  78. list.add(iterateElement(et));
  79. obj.put(et.getName(), list);
  80. } else {
  81. if (obj.containsKey(et.getName())) {
  82. list = (List) obj.get(et.getName());
  83. }
  84. list.add(et.getTextTrim());
  85. obj.put(et.getName(), list);
  86. }
  87. }
  88. return obj;
  89. }
  90. // 测试
  91. public static void main(String[] args) {
  92. System.out.println(  Xml2JsonUtil.xml2JSON("<MapSet>"
  93. + "<MapGroup id='Sheboygan'>" + "<Map>"
  94. + "<Type>MapGuideddddddd</Type>"
  95. + "<SingleTile>true</SingleTile>" + "<Extension>"
  96. + "<ResourceId>ddd</ResourceId>" + "</Extension>" + "</Map>"
  97. + "<Map>" + "<Type>ccc</Type>" + "<SingleTile>ggg</SingleTile>"
  98. + "<Extension>" + "<ResourceId>aaa</ResourceId>"
  99. + "</Extension>" + "</Map>" + "<Extension />" + "</MapGroup>"
  100. + "<ddd>" + "33333333" + "</ddd>" + "<ddd>" + "444" + "</ddd>"
  101. + "</MapSet>"));
  102. }
  103. }

所需要的jar包在我的资源地址:http://download.csdn.net/detail/lovesummerforever/7376755

http://blog.csdn.net/lovesummerforever/article/details/26396465

http://hanyi366.iteye.com/blog/1162365

 
0

0

java XML转JSON格式的更多相关文章

  1. xml和JSON格式相互转换的Java实现

    依赖的包: json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar xom-1.2.1.jar commons-lang-2.1.jar commons-io-1.3.2.j ...

  2. java后台对json格式数据的解析

    Json 和 Jsonlib 的使用 什么是 Json JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式 ...

  3. fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map

    作者:buster2014 推荐:长安散人 fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map JSON字符串与Java对象的转换 1.将Java对象或Java ...

  4. 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据

    有时候,为了让数据可以“跨国经营”,尤其是HTTP Web有关的东东,会将数据内容以 XML 或 JSON 的格式返回,这样一来,不管客户端平台是四大文明古国,还是处于蒙昧时代的原始部落,都可以使用这 ...

  5. fastJson java后台转换json格式数据

    什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  6. JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson

    java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...

  7. .net WebAPI返回xml、json格式

    WebAPI返回xml.json格式简单示例 using System.Net.Http.Formatting; public class TestController : ApiController ...

  8. Ajax中XML和JSON格式的优劣比较

    刚做完一个小的使用Ajax的项目.整个小项目使用JavaScript做客户端,使用PHP做服务器端.利用xmlHttpRequest组件作为交互工具,利用XML作为数据传输的格式.做完后基本做一个简单 ...

  9. 发送xml或json格式的数据给服务器

    后台通过context.Request.InputStream来接收 #region 发送消息 + void SendMessage() /// <summary> /// 发送消息 // ...

随机推荐

  1. hadoop运行作业的脚本解析

    #!/usr/bin/env bash # Licensed to the Apache Software Foundation (ASF) under one or more # contribut ...

  2. NumPy基础:数组和矢量计算

    今天被老板fire了,还是继续抄书吧,安抚我受伤的小心脏.知识还是得慢慢积累,一步一个脚印,这样或许才是最快的捷径. ------2015-2-16-------------------------- ...

  3. Android手机图片适配问题

    需求:今天在做ListView的时候遇到一个问题,就是ListView中加载图片的时候.有些图片的大小比较大,所以会出现图片显示不充分的问题. 首先,再不做任何处理的情况下,大小是这样的.宽度是Wra ...

  4. 获取spring bean的utils

    <span style="font-size:10px;">package com.record.util; import org.springframework.be ...

  5. Disassembly3:variable

    Initializer C++ Primer上说:如果未初始化的Built-in type是定义在function外部的,那么它将自动被初始化为“0”:如果uninitialized的built-in ...

  6. PAT1016

    A long-distance telephone company charges its customers by the following rules: 一个长途电话公司费用告诉它的顾客需要遵循 ...

  7. 安装PHP memcached扩展

    引用 pecl.php.net有两个memcache扩展: memcache   memcached extension memcached PHP extension for interfacing ...

  8. java打jar包

    一.打包jar文件 1      如果是class文件     jar cvf myjar.jar Foo.class Bar.class 如果是包     jar cvf myjar.jar pac ...

  9. backtrack种子

    下载链接:(种子文件) BT5R3-GNOME-64.torrent (md5: 8cd98b693ce542b671edecaed48ab06d) BT5R3-GNOME-32.torrent (m ...

  10. HRBUST 1909 理工门外的树(双数组实现线段树功能)

    线段树固然可以做,但是在考虑线段树之前应该先考虑一下,这种用两个数组来解决问题的方法能不能行,如果行的话,就会为我们省很多时间,毕竟线段树代码量比较大 #include<iostream> ...