gpt4 book ai didi

java - JAXB 将多个对象编码到一个文件

转载 作者:数据小太阳 更新时间:2023-10-29 02:04:08 26 4
gpt4 key购买 nike

我想将许多对象编码到一个 xml 文件中。这进展顺利,除了我的编码器坚持添加额外的 <?xml version="1.0" ?>在每个对象之前。

  1. 将多个对象编码到同一个文件中的首选方法是什么?
  2. 如果没有别的,摆脱这些无关的 xml 声明的最佳方法是什么?

我当前的代码:

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" ?>在每个对象之前。

最佳答案

XML 文档总是有一个根元素,因此将多个对象编码到一个文件中不会产生有效的 XML。

您应该有一个根对象,其中包含一个 Object1 元素和一个 Object2 元素,并编码此根对象。

否则,Marshaller API doc说:

Supported Properties

[...]

jaxb.fragment - value must be a java.lang.Boolean This property determines whether or not document level events will be generated by the Marshaller. If the property is not specified, the default is false. This property has different implications depending on which marshal api you are using - when this property is set to true:

[...]

marshal(Object,XMLStreamWriter) - the Marshaller will not generate XMLStreamConstants.START_DOCUMENT and XMLStreamConstants.END_DOCUMENT events.

关于java - JAXB 将多个对象编码到一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com