答案:Java中将List转换为XML常用JAXB和XStream。JAXB需注解和包装类,适合规范项目;XStream无需注解,配置简单,适合快速开发。根据需求选择方案。

Java中将List集合转换为XML字符串,通常借助第三方库实现,最常用的是 JAXB(Java Architecture for XML Binding)或 XStream。下面分别介绍这两种方式的使用方法。
使用JAXB将List转换为XML字符串
JAXB是Java官方支持的XML绑定框架,适合处理POJO与XML之间的转换。要使用JAXB,需确保类有无参构造函数,并提供getter/setter方法。
步骤如下:- 定义实体类并添加JAXB注解(如 @XmlRootElement)
- 创建包含对象的List
- 使用JAXBContext和Marshaller将List封装的对象转为XML字符串
示例代码:
import javax.xml.bind.annotation.*;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.StringWriter;
import java.util.List;
@XmlRootElement(name = "users")
@XmlAccessorType(XmlAccessType.FIELD)
class UserListWrapper {
@XmlElement(name = "user")
private List userList;
// 必须有无参构造函数
public UserListWrapper() {}
public UserListWrapper(List userList) {
this.userList = userList;
}
// getter and setter
public List getUserList() { return userList; }
public void setUserList(List userList) { this.userList = userList; }
}
@XmlRootElement
class User {
private int id;
private String name;
// 默认构造函数
public User() {}
public User(int id, String name) {
this.id = id;
this.name = name;
}
// getter and setter
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
执行转换:
立即学习“Java免费学习笔记(深入)”;
public static String listToXmlWithJAXB(Listusers) throws Exception { UserListWrapper wrapper = new UserListWrapper(users); JAXBContext context = JAXBContext.newInstance(UserListWrapper.class); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); StringWriter writer = new StringWriter(); marshaller.marshal(wrapper, writer); return writer.toString(); }
使用XStream将List直接转为XML
XStream更简单,无需注解,支持任意对象结构,适合快速开发。
使用步骤:- 添加XStream依赖(Maven)
- 创建XStream实例
- 调用toXML()方法输出字符串
Maven依赖:
com.thoughtworks.xstream xstream 1.4.20
代码示例:
import com.thoughtworks.xstream.XStream;
import java.util.List;
public static String listToXmlWithXStream(List> list) {
XStream xstream = new XStream();
xstream.alias("item", list.get(0).getClass()); // 设置别名
xstream.alias("list", List.class);
return xstream.toXML(list);
}
输出类似:
1 张三 2 李四
注意事项
使用JAXB时注意JDK版本兼容性。从JDK 9开始,JAXB被移出默认包,需手动引入依赖:
javax.xml.bind jaxb-api 2.3.1 org.glassfish.jaxb jaxb-runtime 2.3.1
基本上就这些。JAXB类型安全、结构清晰,适合规范项目;XStream配置少、上手快,适合快速原型或简单场景。根据实际需求选择即可。










