我有大量的java对象,希望使用JAXB编组没有根元素的列表。有可能吗?
我有一个类似的列表
List<Element> elements = new ArrayList<Element>
Expected Output:
<element>
----------
---------
</element>
<element>
---------
---------
<element>
我怎样才能以这种方式编组,
任何参考或提示将不胜感激。
答案 0 :(得分:4)
您可以遍历列表,单独编组每个项目。您需要在JAXB_FRAGMENT
上设置Marshaller
属性,以防止写出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);
}
}
}
}