【问题标题】:Convert xml file to json object using dom parser in java使用java中的dom解析器将xml文件转换为json对象
【发布时间】:2016-01-30 23:48:59
【问题描述】:

试图将任何类型的 XML 文件转换为 JSON 对象结构。 不同的 xml 文件具有不同深度的元素和子元素。 当具有相同名称的元素处于相同高度时创建数组 我需要一个为任何结构化 XML 文件创建精确 JSON 对象的递归函数

【问题讨论】:

  • 你试过了吗???使用 org.json 的 XML.toJSONObject() 方法。
  • 是的,它可以工作,但我需要递归
  • 可以递归调用该方法。试一试,如果有任何问题,请下次使用代码发布问题。

标签: java xml jsonobject


【解决方案1】:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author nikunj.m
 */
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class xmlTojsonDom1 {

public static void main(String[] args) {
    try {
        File file = new File("D:/Noname1.xml");
        DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc = dBuilder.parse(file);
        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
        if (doc.hasChildNodes()) {
            JSONArray ddd = printNote_1(doc.getChildNodes());
            System.out.println("ddd ::::: " + ddd);
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}

private static JSONArray printNote_1(NodeList nodeList) {
    JSONArray dataArr = new JSONArray();
    JSONObject dataObject = new JSONObject();
    for (int count = 0; count < nodeList.getLength(); count++) {
        Node tempNode = nodeList.item(count);
        if (tempNode.getNodeType() == Node.ELEMENT_NODE) {
            if (tempNode.hasChildNodes() && tempNode.getChildNodes().getLength() > 1) {
                JSONArray temArr = printNote_1(tempNode.getChildNodes());
                if (dataObject.containsKey(tempNode.getNodeName())) {
                    dataObject.getJSONArray(tempNode.getNodeName()).add(temArr.getJSONObject(0));
                } else {
                    dataObject.put(tempNode.getNodeName(), temArr);
                }
            } else {
                dataObject.put(tempNode.getNodeName(), tempNode.getTextContent());
            }
        }
    }
    dataArr.add(dataObject);
    return dataArr;
}

}

【讨论】:

    【解决方案2】:

    Please refere this

    XmlMapper xmlMapper = new XmlMapper();

    String xml= FileUtils.readFileToString(new File("test_4.xsd.xml"),Charset.defaultCharset());

    JsonNode 节点 = xmlMapper.readTree(xml.getBytes());

    ObjectMapper jsonMapper = new ObjectMapper();

    字符串 json = jsonMapper.writeValueAsString(node);

    System.out.println(json);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-24
      • 2021-05-16
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      相关资源
      最近更新 更多