java XML转JSON格式

java XML转JSON格式代码如下所示importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.InputStream;importjava.util.HashMap;importjava.util.LinkedList;importjava.util.List;importjava.util.Map

大家好,又见面了,我是你们的朋友全栈君。

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

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


import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class Xml2JsonUtil {
	/**
	 * 转换一个xml格式的字符串到json格式
	 * 
	 * @param xml
	 *            xml格式的字符串
	 * @return 成功返回json 格式的字符串;失败反回null
	 */
	@SuppressWarnings("unchecked")
	public static  String xml2JSON(String xml) {
		JSONObject obj = new JSONObject();
		try {
			InputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));
			SAXBuilder sb = new SAXBuilder();
			Document doc = sb.build(is);
			Element root = doc.getRootElement();
			obj.put(root.getName(), iterateElement(root));
			return obj.toString();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 转换一个xml格式的字符串到json格式
	 * 
	 * @param file
	 *            java.io.File实例是一个有效的xml文件
	 * @return 成功反回json 格式的字符串;失败反回null
	 */
	@SuppressWarnings("unchecked")
	public static String xml2JSON(File file) {
		JSONObject obj = new JSONObject();
		try {
			SAXBuilder sb = new SAXBuilder();
			Document doc = sb.build(file);
			Element root = doc.getRootElement();
			obj.put(root.getName(), iterateElement(root));
			return obj.toString();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 一个迭代方法
	 * 
	 * @param element
	 *            : org.jdom.Element
	 * @return java.util.Map 实例
	 */
	@SuppressWarnings("unchecked")
	private static Map  iterateElement(Element element) {
		List jiedian = element.getChildren();
		Element et = null;
		Map obj = new HashMap();
		List list = null;
		for (int i = 0; i < jiedian.size(); i++) {
			list = new LinkedList();
			et = (Element) jiedian.get(i);
			if (et.getTextTrim().equals("")) {
				if (et.getChildren().size() == 0)
					continue;
				if (obj.containsKey(et.getName())) {
					list = (List) obj.get(et.getName());
				}
				list.add(iterateElement(et));
				obj.put(et.getName(), list);
			} else {
				if (obj.containsKey(et.getName())) {
					list = (List) obj.get(et.getName());
				}
				list.add(et.getTextTrim());
				obj.put(et.getName(), list);
			}
		}
		return obj;
	}

	// 测试
	public static void main(String[] args) {
		System.out.println(  Xml2JsonUtil.xml2JSON("<MapSet>"
				+ "<MapGroup id='Sheboygan'>" + "<Map>"
				+ "<Type>MapGuideddddddd</Type>"
				+ "<SingleTile>true</SingleTile>" + "<Extension>"
				+ "<ResourceId>ddd</ResourceId>" + "</Extension>" + "</Map>"
				+ "<Map>" + "<Type>ccc</Type>" + "<SingleTile>ggg</SingleTile>"
				+ "<Extension>" + "<ResourceId>aaa</ResourceId>"
				+ "</Extension>" + "</Map>" + "<Extension />" + "</MapGroup>"
				+ "<ddd>" + "33333333" + "</ddd>" + "<ddd>" + "444" + "</ddd>"
				+ "</MapSet>"));
	}
}


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162476.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux下配置lamp项目目录修改问题「建议收藏」

    linux下配置lamp项目目录修改问题「建议收藏」使用安装lamp(lnmp)教程安装好之后,修改项目默认地址。修改了httpd.conf内的默认地址,但是刷新页面没有变化,找了好久,原来是安装完lamp之后默认开启了虚拟机配置,所以一直打到的是虚拟机上。刚觉是个不错的idea,以免之后修改地址还要改域名解析。1.在httpd.conf中打开虚拟机配置即可Includeconf/extra/httpd-vhosts.conf…

    2022年6月6日
    27
  • 发现 Google Buzz 与 Google Code 进行了集成[通俗易懂]

    发现 Google Buzz 与 Google Code 进行了集成[通俗易懂]提交B3logSolo(运行在GAE/J上的博客程序)代码后发现GoogleCode版本控制系统会将提交日志同步发布到GoogleBuzz中:但在Buzzconnectedsites里并没有看到与GoogleCode关联:现在一提交代码就Buzz,还是比较无奈的….本文是使用B3logSolo从简约设计の艺术进行同步发布的原文地址:…

    2022年10月16日
    0
  • Activiti7的El表达式的坑 com.fasterxml.jackson.databind.node.IntNode to class java.lang.Long (incompatible

    Activiti7的El表达式的坑 com.fasterxml.jackson.databind.node.IntNode to class java.lang.Long (incompatible///网关标准金额Assigneevariables.put(Assignee_standardMoney,”1000″);<sequenceFlowid=”_12″sourceRef=”_5″targetRef=”_6″><conditionExpressionxsi:type=”tFormalExpression”><![CDATA[${amountOfMoney<‘1000’}]]></condition.

    2022年7月28日
    3
  • fastjson -String转JSONArray,JSONArray转List[通俗易懂]

    fastjson -String转JSONArray,JSONArray转List[通俗易懂]String转JsonArrayStringreview=”[{“name”:”人员A”,”review_grades”:{“name”:”优秀”,”parent”:”-1″,”key”:”1″},”remark”:”XXX今年XXX获得优秀党员称号”},{“name”:”人员B”,”review_grades”:{“name”:”合格”,”parent”:”-1″,”key”:”2″},”remark”:”表现良好”},{“name”:”人员C”,”review_grades”:{“name”:”

    2022年6月20日
    81
  • docker 镜像启动命令_宿主机ping不通docker

    docker 镜像启动命令_宿主机ping不通dockerdockerrun:创建一个新的容器并运行一个命令语法dockerrun[OPTIONS]IMAGE[COMMAND][ARG…]OPTIONS说明: -astdin:指定标准输入输出内容类型,可选STDIN/STDOUT/STDERR三项; -d:后台运行容器,并返回容器ID; -i:以交互模式运行容器,通常与-t同时使用; -P:随机端口映射,容器内部端口随机映射到主机的端口 -p:指定端口映射,格式为:主…

    2022年9月23日
    0
  • jQuery漂亮图标的垂直导航菜单

    效果展示 http://hovertree.com/texiao/nav/3/jQuery漂亮图标的垂直导航菜单 是一款当鼠标滑过菜单项时,会有一个背景遮罩层跟着鼠标移动,效果非常

    2021年12月27日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号