java实现将List转换为xml,且list属性中包含其他list
时间: 2024-12-07 19:20:35 浏览: 14
在Java中,我们可以利用JAXB (Java Architecture for XML Binding) 或者第三方库如XStream或FastXML来将List转换为XML。这里我们以JAXB为例,因为它提供了内置的支持,可以很好地处理嵌套的列表结构。
首先,你需要有一个简单的Java类作为模型,它有包含List的属性,例如:
```java
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "root")
public class MyObject {
private String name;
@XmlElement(name = "subList")
private List<MySubObject> subList;
// getters and setters...
}
class MySubObject {
private String value;
// getters and setters...
}
```
然后,你可以创建一个`Marshaller`实例并设置它的context,再序列化List到XML:
```java
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.util.List;
import java.util.ArrayList;
public void listToXml(List<MyObject> objects) {
JAXBContext context = JAXBContext.newInstance(MyObject.class);
try {
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
// 创建一个XMLStreamWriter,这可以是文件、String等
StringWriter writer = new StringWriter();
marshaller.marshal(objects, writer);
String xmlOutput = writer.toString();
System.out.println("XML Output:\n" + xmlOutput);
} catch (Exception e) {
e.printStackTrace();
}
}
```
如果你的List嵌套更复杂,比如`MyObject`中有另一个List类型的属性,只需要继续为那个字段添加`@XmlElement`注解即可。记得导入相应的包,如`javax.xml.bind.annotation.XmlElementWrapper`。
阅读全文