Xml转化成json的三种方式:
方法一: 使用json-lib框架, 需要的依赖包比较多
1 、这里通过Class的getResourceAsStream方法获得指定文件的输入流,这里指定参数没有带/,表示Test类与xml文件在同一级目录下,如果有/那么是从根目录进行获取的,
2 、之后利用IOUtils的toString方法将该输入流转化为xml格式的字符串输出,调用XMLSerializer的read方法接受xml格式的字符串,将其转化为JSON对象
3、 这里实际上输出json对象和调用json对象的toString方法输出的形式在控制台展示的是一样的
package com.XmlToJson;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import net.sf.json.JSON;
import net.sf.json.xml.XMLSerializer;
public class XmlToJson1{
public static void ConvertXMLtoJSON() {
InputStream is = XmlToJson1.class.getResourceAsStream("student.xml");
String xml;
try {
xml = IOUtils.toString(is);
System.out.println(xml);
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json = xmlSerializer.read(xml);
System.out.println(json);
System.out.println(json.toString(0));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
XmlToJson1.ConvertXMLtoJSON();
}
}
输出格式:
{"@age":"too young","@experience":"too simple","@result":"sometimes naive"}
方法二:使用 org.json、 commons-io框架
需要导入包
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
package com.XmlToJson;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;
public class JsonUtils {
public static String XmlToJson2(String filepath) throws IOException {
FileInputStream in = new FileInputStream(filepath);
String xml = IOUtils.toString(in, "utf-8");
JSONObject object = XML.toJSONObject(xml);
return object.toString();
}
public static void main(String[] args) throws JSONException, IOException {
String path = System.getProperty("user.dir") + File.separator + "src" + File.separator + "com" + File.separator
+ "XmlToJson" + File.separator + "student.xml";
String jsonpath = System.getProperty("user.dir") + File.separator + "src" + File.separator + "com"
+ File.separator + "XmlToJson" + File.separator + "test2.json";
System.out.println(path);
String json = XmlToJson2(path);
FileUtils.writeStringToFile(new File(jsonpath), json, "utf-8");
}
}
输出格式:
{"person":{"result":"sometimes naive","experience":"too simple","age":"too young"}}
方法三: 使用 jdom、 fastjson 框架
package com.XmlToJson;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.json.JSONObject;
public class XmlToJson3 {
public static void main(String[] args) throws IOException {
//String path = System.getProperty("user.dir") + File.separator + "testdata" + File.separator + "pushClaim.xml";
//String jsonpath = System.getProperty("user.dir") + File.separator + "testdata" + File.separator + "test3.json";
String path = System.getProperty("user.dir") + File.separator + "src" + File.separator + "com" + File.separator
+ "XmlToJson" + File.separator + "student.xml";
String jsonpath = System.getProperty("user.dir") + File.separator + "src" + File.separator + "com"
+ File.separator + "XmlToJson" + File.separator + "test3.json";
String json = XmlToJson(new File(path));
System.out.println(json);
FileUtils.writeStringToFile(new File(jsonpath), json, "utf-8");
}
public static String XmlToJson(File file) {
JSONObject object = new JSONObject();
SAXBuilder builder = null;
try {
builder = new SAXBuilder();
Document document = builder.build(file);
Element element = document.getRootElement();
object.put(element.getName(), IterateElement(element));
return object.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private static Map IterateElement(Element element) {
List node = element.getChildren();
List list = null;
Map map = new HashMap();
for (int i = 0; i < node.size(); i++) {
list = new LinkedList();
Element element1 = (Element) node.get(i);
if (element1.getTextTrim().equals("")) {
if (element1.getChildren().size() == 0) {
continue;
}
if (map.containsKey(element1.getName())) {
list = (List) map.get(element1.getName());
}
list.add(IterateElement(element1));
map.put(element1.getName(), list);
} else {
if (map.containsKey(element1.getName())) {
list = (List) map.get(element1.getName());
}
list.add(element1.getTextTrim());
map.put(element1.getName(), list);
}
}
return map;
}
}