惯例:
算了,习惯也是可以改的。我是温浩然。
需求,把一个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文件的方法,看我另一篇日志。