xml转json java 源码

来源:互联网 发布:手机屏保软件下载 编辑:程序博客网 时间:2024/06/05 18:17

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格式的字符串
  * @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();
   
   Map map=iterateElement(root);
   return map.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 map = 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("")) {
    System.out.println("www");
    if (et.getChildren().size() == 0)
     continue;
    if (map.containsKey(et.getName())) {
     list = (List) map.get(et.getName());
    }
    list.add(iterateElement(et));
    map.put(et.getName(), list);
   } else {
    System.out.println("ttt");
    if (map.containsKey(et.getName())) {
     System.out.println("aaa aaa");
     list = (List) map.get(et.getName());
    }
    list.add(et.getTextTrim());
    map.put(et.getName(), list);
   }
  }
  return map;
 }

 // 测试

 public static void main(String[] args) {
  File xmlFile= new File("F:\\test.xml");
  String s=Xml2JsonUtil.xml2JSON(xmlFile);
  System.out.println(s);
  
  
  

 }

}

0 0