0
点赞
收藏
分享

微信扫一扫

java实现xml转Json工具类

西曲风 2024-02-06 阅读 21

Java实现XML转Json工具类

XML(Extensible Markup Language)和Json(JavaScript Object Notation)是两种常见的数据交换格式。XML是一种用于存储和传输数据的标记语言,而Json是一种轻量级的数据交换格式,常用于Web应用程序之间的数据传输。在实际开发中,我们经常需要将XML转换为Json或者将Json转换为XML。为了方便处理这种转换,我们可以使用Java实现一个XML转Json的工具类。

1. XML转Json的原理

XML和Json之间的转换可以通过解析XML文档并根据其结构构建对应的Json对象来实现。Java中有许多开源的XML解析库,如DOM、SAX和JDOM等,我们可以使用其中的任何一个来读取XML文档。然后,根据XML的节点和属性信息,构建对应的Json对象,并将其转换为Json字符串。

2. 实现XML转Json的工具类

下面是一个简单的Java工具类,用于将XML转换为Json:

import org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

public class XmlToJsonConverter {
    public static String convert(String xml) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(xml);

            Element root = document.getDocumentElement();
            JSONObject json = parseElement(root);

            return json.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    private static JSONObject parseElement(Element element) {
        JSONObject json = new JSONObject();

        if (element.hasAttributes()) {
            for (int i = 0; i < element.getAttributes().getLength(); i++) {
                Node attribute = element.getAttributes().item(i);
                json.put("@" + attribute.getNodeName(), attribute.getNodeValue());
            }
        }

        if (element.hasChildNodes()) {
            NodeList childNodes = element.getChildNodes();

            for (int i = 0; i < childNodes.getLength(); i++) {
                Node child = childNodes.item(i);

                if (child.getNodeType() == Node.ELEMENT_NODE) {
                    if (json.has(child.getNodeName())) {
                        if (!json.get(child.getNodeName()).getClass().isArray()) {
                            Object value = json.get(child.getNodeName());
                            json.remove(child.getNodeName());
                            json.append(child.getNodeName(), value);
                        }

                        json.append(child.getNodeName(), parseElement((Element) child));
                    } else {
                        json.put(child.getNodeName(), parseElement((Element) child));
                    }
                } else if (child.getNodeType() == Node.TEXT_NODE) {
                    json.put("value", child.getNodeValue());
                }
            }
        }

        return json;
    }
}

3. 使用示例

下面是一个使用该工具类的示例:

public class Main {
    public static void main(String[] args) {
        String xml = "<root><name>John Doe</name><age>30</age></root>";

        String json = XmlToJsonConverter.convert(xml);
        System.out.println(json);
    }
}

运行上述代码,输出结果为:

{
  "root": {
    "name": {
      "value": "John Doe"
    },
    "age": {
      "value": "30"
    }
  }
}

4. 总结

通过Java实现一个XML转Json的工具类,可以帮助我们在实际开发中方便地处理XML和Json之间的转换。这样的工具类可以节省我们大量的时间和精力,并且提供了更灵活的操作方式。希望本文对你理解XML和Json的转换以及使用Java实现相关工具类有所帮助。

gantt
    title XML转Json工具类开发甘特图

    section 任务分配
    开发工具类      :done,    des1, 2022-09-01, 5d
    单元测试        :active,  des2, after des1, 3d
    代码审查        :         des3, after des2, 2d
    文档编写        :         des4, after des3, 2d

    section 里程碑
    完成工具类      :crit, done,   2022-09-06
    完成文档        :crit, done,   2022-09-10
举报

相关推荐

0 条评论