首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB将多个对象编组成一个文件

JAXB将多个对象编组成一个文件
EN

Stack Overflow用户
提问于 2012-01-20 22:30:19
回答 2查看 4.3K关注 0票数 4

我想将许多对象编成一个xml文件。这很顺利,只是我的封送处理程序坚持在每个对象之前添加一个额外的<?xml version="1.0" ?>

  1. --什么是将多个对象编组到同一个文件中的首选方法?
  2. ,如果没有其他方法,那么消除这些无关的xml声明的最佳方法是什么?

我现在的代码是:

代码语言:javascript
复制
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" ?>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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事件.

票数 6
EN

Stack Overflow用户

发布于 2017-04-20 15:55:32

我觉得你应该把词根加起来

代码语言:javascript
复制
@XmlRootElement(name = "Name")
public class EntityName   {

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8948703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档