您可以逐个遍历整个列表中的每个项目。您需要在Marshaller
上设置JAXB_FRAGMENT
属性以防止XML头被写出。您只需为此用例创建JAXBContext
和Marshaller
一次。
import java.io.FileOutputStream;
import java.util.*;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Element.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
List<Element> elements = new ArrayList<>();
elements.add(new Element());
elements.add(new Element());
try(FileOutputStream fos = new FileOutputStream("src/forum18509018/out.txt")) {
for(Element element : elements) {
marshaller.marshal(element, fos);
}
}
}
}
感谢你的反应,我不想这样做,通过迭代列表以及它们编组到文件需要大量的时间,特别是当你有巨大的data.That的处理,为什么我要一次处理列表。有没有更好的方法来做到这一点? – user964147
@ user964147 - 如果您创建了'JAXBContext'和'Marshaller',那么为什么您会预期在将列表与N个项目编组在一起并编组N个项目之间会出现性能差异? –
我正在经历它,如果您编组单个条目并将它们写入文件并再次封送附加到该文件的其他条目,显然需要比将一堆数据附加到文件更多的时间。 – user964147