标签: 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

最新文章

  1. How to build a NFS Service
  2. JAVA--继承
  3. js判断是否是移动设备登陆网页
  4. Laravel5.1-错误和日志
  5. 严重: Exception starting filter struts2解决方法!
  6. SQL 删除存在于A表但是不存在B表中的记录
  7. Asp.net MVC 版本简史
  8. 1024PHP数组
  9. 【freemaker】之Unknown built-in variable: now
  10. Heritrix源码分析(六) Heritrix的文件结构分析(转)
  11. HHVM简介(译)
  12. 查询语句,按照时间排序,取前N条
  13. Windows服务之启动、停止、暂停、继续
  14. 深度学习 for java http://deeplearning4j.org/
  15. JavaScript 中对变量和函数声明的“提前(hoist)”
  16. mysql zip 版安装
  17. java笔记----获取电脑上ip(内网ip)
  18. ssh远程登陆脚本(带跳板机)
  19. tp3.2多个或者并且语句语法
  20. 开源的,跨平台的.NET机器学习框架ML.NET

热门文章

  1. struts2获得提交是get还是post方法提交
  2. Android中如何将Bitmap byte裸数据转换成Bitmap图片int数据
  3. if __name__ == &#39;__main__&#39;在python中的应用
  4. [转]慎用InputStream的read()方法
  5. monkeyrunner对比屏幕局部图像.getSubImage()
  6. android代码实现免提功能
  7. dev GridControl直接打印 纵向合并单元格
  8. Codeforces Round #361 (Div. 2) C.NP-Hard Problem
  9. Kyoto Cabinet--nosql型单机数据库
  10. 使用print2flash开发在线文档