我想将许多对象编成一个xml文件。这很顺利,只是我的封送处理程序坚持在每个对象之前添加一个额外的<?xml version="1.0" ?>。
我现在的代码是:
JAXBContext jc = JAXBContext.newInstance(relevantClasses);
Marshaller m = jc.createMarshaller();
XMLOutputFactory xof = XMLOutputFactory.newFactory();
XMLStreamWriter xsw = xof.createXMLStreamWriter(Channels.newOutputStream(fileWriteChannel), "UTF-8");
xsw.writeStartDocument("UTF-8", "1");
m.marshal(object1, xsw);
m.marshal(object2, xsw);
xsw.close();这很好,我得到了我想要的<object1>和<object2>数据.它只是在每个对象之前有一个额外的<?xml version="1.0" ?>。
发布于 2012-01-20 22:35:38
XML文档总是有一个根元素,因此将多个对象编组到单个文件不会导致有效的XML。
您应该有一个带有Object1元素的根对象和一个Object2元素,并封送这个根对象。
否则,Marshaller API doc会说:
支持的特性
..。
jaxb.fragment -值必须是java.lang.Boolean -此属性决定文档级事件是否将由Marshaller生成。如果未指定属性,则默认值为false。此属性具有不同的含义,具体取决于您正在使用的编组api --当此属性设置为true时:
..。
元帅(Object,XMLStreamWriter) -马歇尔不会生成XMLStreamConstants.START_DOCUMENT和XMLStreamConstants.END_DOCUMENT事件.
发布于 2017-04-20 15:55:32
我觉得你应该把词根加起来
@XmlRootElement(name = "Name")
public class EntityName {
}https://stackoverflow.com/questions/8948703
复制相似问题