您的位置:首页 > 编程语言 > Java开发

java XML转JSON格式

2016-05-06 08:46 573 查看
需求:

服务器传回来XML数据,需要对XML数据进行解析,生成JSON文件

建立自己的资源库的重要性

所需要的jar包下载地址:http://download.csdn.net/detail/zk673820543/9511502

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>"));
}
}


这里的转换只能转换标签后面的内容,标签属性没有能够转换出来,格式也比较乱,建议使用net.sf.json来进行转换,也可以使用oxStream来进行转换

工具是人类的生产力
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: