檔案操作 -- Xml轉化成Json的三種方式
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; } }