【问题标题】:Can Jaxb marshal child elements without the root element?Jaxb 可以在没有根元素的情况下编组子元素吗?
【发布时间】:2012-08-03 03:11:43
【问题描述】:

我不确定 jaxb 是否可以解决以下问题,但我还是会问。

在某个项目中,我们使用带有已定义架构的 jaxb 来创建 xml 文件的下一个结构。

<aaa>
     <bbb>
        more inner children here
     </bbb>
     <bbb>
        more inner children here
     </bbb>
</aaa>

我们还使用了 jaxb 的自动类生成,它创建了以下类:aaa 和 bbb,其中 aaa 是作为 @XmlRootElement 生成的。

我们现在想在一个新项目中使用相同的架构,这也将与以前的项目兼容。 我想做的是使用相同的 jaxb 生成的类,而不对架构进行任何更改,以便仅将单个 bbb 对象编组到 xml。

JAXBContext jc = JAXBContext.newInstance("generated");
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(bbb, writer);

所以我们会得到下一个结果:

 <bbb>
    <inner child1/>
    <inner child2/>
    ...
 </bbb>

我目前无法这样做,因为编组器大喊我没有定义 @XmlRootElement。

我们实际上是在尝试避免将架构分成 2 个架构的情况,一个只有 bbb,另一个是 aaa 导入 bbb。

提前致谢!

【问题讨论】:

标签: java xml jaxb marshalling


【解决方案1】:

我可能迟到了 3 年,但你有没有尝试过这样的事情:

public static String marshal(Bbb bbb) throws JAXBException {
    StringWriter stringWriter = new StringWriter();

    JAXBContext jaxbContext = JAXBContext.newInstance(Bbb.class);
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

    // format the XML output
    jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

    QName qName = new QName("com.yourModel.bbb", "bbb");
    JAXBElement<Bbb> root = new JAXBElement<Bbb>(qName, Bbb.class, bbb);

    jaxbMarshaller.marshal(root, stringWriter);

    String result = stringWriter.toString();
    LOGGER.info(result);
    return result;
}

这是我在没有 rootElement 的情况下必须编组/解组时使用的文章: http://www.source4code.info/2013/07/jaxb-marshal-unmarshal-with-missing.html

它对我来说很好用。我正在为其他寻找答案的迷失灵魂写这篇回复。

一切顺利:)

【讨论】:

    【解决方案2】:

    我可能迟到了 5 年 :) 但你有没有尝试过这样的事情:

    StringWriter stringWriter = new StringWriter();
    JAXB.marshal(bbb, stringWriter);
    String bbbString = stringWriter.toString();
    

    【讨论】:

    • javax.xml.bind.JAXB
    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多