java xml转json

要用到一个功能是把xml格式文件转成json格式的.网上找了很多都不太慢意就自已写了一个

不多说,贴原码:

public class Utilities {
 /**
  * 转换一个xml格式的字符串到json格式
  * @param xml xml格式的字符串
  * @return 成功返回json 格式的字符串;失败反回null
  */
 @SuppressWarnings("unchecked")
 public 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 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")
 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(new Utilities().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>"));
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值