Java怎么将List集合转换为XML字符串

来源:AI编程作者:泰国程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《Java怎么将List集合转换为XML字符串》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Java怎么将List集合转换为XML字符串》有用,将其分享出去将是对创作者最好的鼓励。

在Java开发中,将List集合转换为XML字符串是常见需求,不同的实现方式适用不同的场景,下面介绍几种主流的实现方法。

Java怎么将List集合转换为XML字符串

方法一:使用JDK原生DOM API实现

JDK自带的org.w3c.dom包提供了DOM操作相关的类,不需要引入额外依赖就可以完成转换,适合对依赖有严格限制的项目。

实现步骤

  • 创建DocumentBuilderFactory实例,获取DocumentBuilder
  • 新建Document文档对象,创建根节点
  • 遍历List集合,为每个元素创建对应的子节点并添加属性或文本
  • 使用Transformer将Document转换为XML字符串

代码示例

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

public class ListToXmlDemo {
    // 定义实体类
    static class User {
        private Integer id;
        private String name;
        private Integer age;

        public User(Integer id, String name, Integer age) {
            this.id = id;
            this.name = name;
            this.age = age;
        }

        public Integer getId() {
            return id;
        }

        public String getName() {
            return name;
        }

        public Integer getAge() {
            return age;
        }
    }

    public static void main(String[] args) throws Exception {
        // 准备测试数据List
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "张三", 20));
        userList.add(new User(2, "李四", 22));
        userList.add(new User(3, "王五", 25));

        // 创建DocumentBuilderFactory
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        // 创建Document对象
        Document document = builder.newDocument();
        // 创建根节点users
        Element rootElement = document.createElement("users");
        document.appendChild(rootElement);

        // 遍历List添加子节点
        for (User user : userList) {
            Element userElement = document.createElement("user");
            // 添加id属性
            userElement.setAttribute("id", String.valueOf(user.getId()));
            // 添加name子节点
            Element nameElement = document.createElement("name");
            Text nameText = document.createTextNode(user.getName());
            nameElement.appendChild(nameText);
            userElement.appendChild(nameElement);
            // 添加age子节点
            Element ageElement = document.createElement("age");
            Text ageText = document.createTextNode(String.valueOf(user.getAge()));
            ageElement.appendChild(ageText);
            userElement.appendChild(ageElement);
            // 将user节点添加到根节点
            rootElement.appendChild(userElement);
        }

        // 将Document转换为XML字符串
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        // 设置输出属性,缩进格式
        transformer.setOutputProperty("encoding", "UTF-8");
        transformer.setOutputProperty("indent", "yes");
        DOMSource domSource = new DOMSource(document);
        StringWriter writer = new StringWriter();
        StreamResult streamResult = new StreamResult(writer);
        transformer.transform(domSource, streamResult);
        String xmlString = writer.toString();
        System.out.println(xmlString);
    }
}

方法二:使用XStream第三方库实现

XStream是一个简单的库,用于将对象序列化为XML,或者将XML反序列化为对象,使用起来非常简洁,不需要手动创建DOM节点,适合快速开发场景。

引入依赖

如果是Maven项目,需要在pom.xml中添加以下依赖:

<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.4.20</version>
</dependency>

代码示例

import com.thoughtworks.xstream.XStream;
import java.util.ArrayList;
import java.util.List;

public class XStreamListToXmlDemo {
    // 实体类,需要和前面的User类一致,这里省略getter方法定义
    static class User {
        private Integer id;
        private String name;
        private Integer age;

        public User(Integer id, String name, Integer age) {
            this.id = id;
            this.name = name;
            this.age = age;
        }
    }

    public static void main(String[] args) {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "张三", 20));
        userList.add(new User(2, "李四", 22));
        userList.add(new User(3, "王五", 25));

        XStream xStream = new XStream();
        // 设置别名,让生成的XML标签更简洁
        xStream.alias("user", User.class);
        xStream.alias("users", List.class);
        // 将List转换为XML字符串
        String xmlString = xStream.toXML(userList);
        System.out.println(xmlString);
    }
}

两种方式的对比

两种实现方式各有优劣,开发者可以根据项目需求选择:

实现方式优点缺点适用场景
JDK原生DOM API无额外依赖,兼容性好,所有Java环境都支持代码编写繁琐,需要手动处理节点创建和属性设置不允许引入第三方依赖的项目,对XML结构有精细控制需求的场景
XStream库代码简洁,开发效率高,自动处理对象到XML的映射需要引入第三方依赖,可能存在版本兼容问题快速开发项目,对XML结构没有特殊要求,允许引入依赖的场景

注意事项

  • 使用DOM API时,要注意Document对象的创建方式,避免重复创建工厂实例影响性能
  • XStream默认会序列化所有字段,如果需要排除某些字段,可以使用xStream.omitField(Class, String)方法
  • 生成的XML字符串如果需要传输或者存储,建议指定统一的编码格式,比如UTF-8,避免乱码问题
  • 如果List中的元素是复杂对象,包含嵌套结构,两种方式都支持嵌套转换,只需要保证对象的getter方法正常即可

JavaListXML字符串集合转换修改时间:2026-06-26 01:12:34

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。