关闭

XML转JSON

标签: xmltujson
163人阅读 评论(0) 收藏 举报
分类:

惯例:

算了,习惯也是可以改的。我是温浩然。

需求,把一个XML格式文件,改成JSON格式。

代码如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
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 Xml2Json {

	public static void main(String[] args) {
		String path = "C://Users//whr-pc//Desktop//classpath//img//faceMap_ch.plist";  
		
		File file = new File(path);
		
		//生成JSON
		String strJSON = xml2JSON(file);
		
		//日志输出到指定文件中
		PrintStream out;
		try {
			out = new PrintStream("C://Users//whr-pc//Desktop//classpath//img//Systemout.txt");
			
			System.setOut(out);
			System.out.println(strJSON);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}  
		
	}
	
	public static String xml2JSON(File file) {  
        JSONObject obj = new JSONObject();  
        try {  
            SAXBuilder sb = new SAXBuilder();  
            Document doc = sb.build(file);  
            String doc2str = doc.toString();
            System.out.println(doc2str);
            Element root = doc.getRootElement();  
            obj.put(root.getName(), iterateElement(root));  
            return obj.toString();  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }
	
	@SuppressWarnings({ "rawtypes", "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;  
    } 

}

这个代码是可以复制出来用的,完全没有问题。

只是,我在导入JSON的jar包的时候,遇到了各种问题,每个问题,都是缺少jar包。

到最后,文中需要的jar包,剩下如图下的几个:


唉,剩下的也没测试删了可以不可以,应该是都必须要把。

其中,除了jdom-1.0.jar,别的好像都是JSON所需的jar包。


这些包,网上都有,自己下载吧,然后,运行就可以用了,运行单个java文件的方法,看我另一篇日志。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:334829次
    • 积分:4831
    • 等级:
    • 排名:第6592名
    • 原创:159篇
    • 转载:104篇
    • 译文:1篇
    • 评论:37条
    最新评论