开发者社区> 我是温浩然> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

XML转JSON

简介: 惯例: 算了,习惯也是可以改的。我是温浩然。 需求,把一个XML格式文件,改成JSON格式。 代码如下: import java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; import java.util.HashMap; import java.util.LinkedLi
+关注继续查看

惯例:

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

需求,把一个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文件的方法,看我另一篇日志。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring-Batch读取数据 文本数据 数据库数据 XML数据 JSON数据
Spring-Batch读取数据 文本数据 数据库数据 XML数据 JSON数据
0 0
Spring Batch输出文本数据 XML数据 JSON数据 数据库
Spring Batch输出文本数据 XML数据 JSON数据 数据库
0 0
Android网络与数据存储——网络编程数据处理(网络请求解析Json,解析xml)
Android网络与数据存储——网络编程数据处理(网络请求解析Json,解析xml)
0 0
Android网络请求,获取数据demo,几种网络请求的区别,JSON 与 XML 的区别、优劣势
Android网络请求,获取数据demo,几种网络请求的区别,JSON 与 XML 的区别、优劣势
0 0
json转java实体,JSON和XML的区别比较,c#和c++的编译工具, 静态库和动态库的区别
json转java实体,JSON和XML的区别比较,c#和c++的编译工具, 静态库和动态库的区别
0 0
PHP解析json、xml错误
php内置函数json_decode() 可以解析json字符串 但是有的时候看起来正确的json,解析却一直返回null。 你知道吗,json是可能解析失败的,此时PHP不会产生提示。 我们需要手动通过json_last_error()函数获取
0 0
第十一讲:Android中的xml和Json文件的解析
第十一讲:Android中的xml和Json文件的解析
0 0
目标检测VOC数据集标注XML文件转EasyDL数据集标注Json格式
目标检测VOC数据集标注XML文件转EasyDL数据集标注Json格式
0 0
数据交换格式——XML / JSON
数据交换格式——XML / JSON
0 0
+关注
我是温浩然
今天的菜鸟,未来的大牛
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载