1. 程式人生 > >檔案操作 -- Xml轉化成Json的三種方式

檔案操作 -- 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;     } }