Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java xml转map


在 Java 中将 XML 转换为 Map 的过程涉及到解析 XML 文档并将其转换为数据结构。以下是两种常见的方式来实现这个目标,包括每种方式的步骤流程和示例代码:

方式一:使用 Java 内置的 XML 解析器

这种方法使用 Java 内置的 XML 解析器(如 DOM)来解析 XML 文档并将其转换为 Map。以下是步骤流程:

  1. 导入所需的类库: 无需额外的依赖,Java 内置了 XML 解析器。
  2. 解析 XML 文档: 使用 XML 解析器(如 DOM)读取 XML 文档并构建文档对象树。
  3. 遍历文档对象树: 递归遍历文档对象树,将 XML 元素和属性转换为 Map 的键值对。

以下是示例代码:

import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.InputStream;
import java.util.*;

public class XmlToMapUsingDom {
    public static void main(String[] args) throws Exception {
        InputStream inputStream = XmlToMapUsingDom.class.getResourceAsStream("data.xml");
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(inputStream);

        Map<String, Object> resultMap = new HashMap<>();
        Element root = document.getDocumentElement();
        parseElement(root, resultMap);

        System.out.println(resultMap);
    }

    private static void parseElement(Element element, Map<String, Object> map) {
        NodeList children = element.getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
            Node node = children.item(i);
            if (node instanceof Element) {
                Element child = (Element) node;
                if (child.hasChildNodes()) {
                    Map<String, Object> childMap = new HashMap<>();
                    parseElement(child, childMap);
                    putValue(map, child.getNodeName(), childMap);
                } else {
                    putValue(map, child.getNodeName(), child.getTextContent());
                }
            }
        }
    }

    private static void putValue(Map<String, Object> map, String key, Object value) {
        if (map.containsKey(key)) {
            Object existingValue = map.get(key);
            if (existingValue instanceof List) {
                ((List) existingValue).add(value);
            } else {
                List<Object> values = new ArrayList<>();
                values.add(existingValue);
                values.add(value);
                map.put(key, values);
            }
        } else {
            map.put(key, value);
        }
    }
}

方式二:使用第三方库 Jackson

这种方法使用 Jackson 库来解析 XML 文档并将其转换为 Map。以下是步骤流程:

导入所需的类库:

Maven 依赖坐标:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.12.5</version>
</dependency>

Gradle 依赖坐标:

implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.5'

解析 XML 文档:

使用 Jackson 库的 XmlMapper 来读取 XML 文档并将其转换为 Map。

获取 Map 数据:

获取从 XML 转换而来的 Map 对象。

以下是示例代码:

import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import java.io.InputStream;
import java.util.Map;

public class XmlToMapUsingJackson {
    public static void main(String[] args) throws Exception {
        InputStream inputStream = XmlToMapUsingJackson.class.getResourceAsStream("data.xml");
        XmlMapper xmlMapper = new XmlMapper();

        Map<String, Object> resultMap = xmlMapper.readValue(inputStream, Map.class);
        System.out.println(resultMap);
    }
}

无论您选择哪种方式,都可以根据需要进一步处理转换后的 Map 数据以满足您的业务需求。请注意,示例代码中的"data.xml"是 XML 文件的路径,您需要将其替换为您自己的 XML 文件路径。

在Java中将XML转换为JSON有几种常见的方式,我将为您介绍其中三种方式,并提供每种方式的详细步骤流程以及相应的代码示例。Maven依赖 ...
在Java中将XML转换为PDF通常需要使用一些库来生成PDF文件,同时根据XML内容来生成相应的样式和排版。##使用ApacheFOP(F ...
在Java中将对象转换为Map可以使用多种方式,下面我会介绍几种常见的实现方式,并附上示例代码。Maven依赖:Gradle依赖:###使用 ...
在Java中,将Map转换为对象有多种实现方式,下面将介绍其中一些常见的方式,并提供相应的步骤流程和示例代码。示例代码:###方式2:使用B ...
在Java中,将JSON转换为Map有多种方式可以实现,下面我将介绍几种常见的方法,并提供相应的代码示例和依赖坐标。1添加依赖Maven依赖 ...