要将 XML 转换为 Map,可以使用 Java 的 XML 解析库,例如 DOM 或 SAX。以下是使用 DOM 解析 XML 并将其转换为 Map 的示例代码:

import java.io.File;
import java.util.HashMap;
import java.util.Map;

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

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

public class XmlToMapConverter {
    public static void main(String[] args) {
        try {
            File xmlFile = new File('path/to/xml/file.xml');

            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(xmlFile);

            Element rootElement = doc.getDocumentElement();
            Map<String, Object> map = new HashMap<>();
            map.put(rootElement.getNodeName(), processElement(rootElement));

            System.out.println(map);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static Object processElement(Element element) {
        Map<String, Object> map = new HashMap<>();
        NodeList nodeList = element.getChildNodes();

        for (int i = 0; i < nodeList.getLength(); i++) {
            Node node = nodeList.item(i);

            if (node instanceof Element) {
                if (node.hasChildNodes()) {
                    Object value = processElement((Element) node);
                    if (map.containsKey(node.getNodeName())) {
                        Object existingValue = map.get(node.getNodeName());
                        if (existingValue instanceof Object[]) {
                            Object[] newArray = new Object[] { existingValue, value };
                            map.put(node.getNodeName(), newArray);
                        } else {
                            map.put(node.getNodeName(), new Object[] { existingValue, value });
                        }
                    } else {
                        map.put(node.getNodeName(), value);
                    }
                } else {
                    map.put(node.getNodeName(), node.getTextContent());
                }
            }
        }

        return map;
    }
}

请注意,上述代码假设 XML 文件的结构是嵌套的,并且没有重复的元素名称。如果 XML 文件具有不同的结构或重复的元素名称,您可能需要根据实际情况进行相应的修改。

Java XML 转 Map - 使用 DOM 解析库

原文地址: https://www.cveoy.top/t/topic/pcws 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录