相关疑难解决方法(0)

JAXB Fragment Marshal没有命名空间

我正在使用我的marshaller的JAXB_FRAGMENT属性来编组WorkSet级别.问题在于,当我封送它时,每次都为WorkSet元素提供xmlns属性.有没有办法编组,以便它不附加xmlns属性?这是我的XML的样子.

    <Import>
        <WorkSets>
            <WorkSet xmlns="http://www.namespace.com">
                <Work>
                <Work>
                ...
                ..
                ...
            </WorkSet>
            <WorkSet xmlns="http://www.namespace.com">
                <Work>
                <Work>
                ...
            </WorkSet>
        </WorkSets>
    </Import>
Run Code Online (Sandbox Code Playgroud)

这是我正在使用上面创建的代码:

FileOutputStream fos = new FileOutputStream("import.xml");
XMLStreamWriter writer = XMLOutputFactory.newFactory().createXMLStreamWriter(fos);

JAXBContext jc = JAXBContext.newInstance(WorkSet.class);
Marshaller m = jc.createMarshaler();
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

writer.writeStartDocument();
writer.writeStartElement("Import");
writer.writeAttribute("xmlns","http://www.namespace.com");
writer.writeStartElement("WorkSets");

while(hasWorkSet){
m.marshal(workSet, writer)
}
writer.writeEndDocument();
writer.close();
Run Code Online (Sandbox Code Playgroud)

java xml jaxb marshalling

11
推荐指数
1
解决办法
3万
查看次数

Jaxb可以在没有根元素的情况下编组子元素吗?

我不确定jaxb是否可以使用以下问题,但无论如何我都会问.

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

<aaa>
     <bbb>
        more inner children here
     </bbb>
     <bbb>
        more inner children here
     </bbb>
</aaa>
Run Code Online (Sandbox Code Playgroud)

我们还使用自动类生成jaxb来创建类:aaa和bbb,其中aaa是作为@XmlRootElement生成的.

我们现在想要在新项目中使用相同的模式,该模式也将与之前的项目兼容.我想做的是使用相同的jaxb生成的类,而不对模式进行任何更改,以便只将一个bbb对象编组为xml.

JAXBContext jc = JAXBContext.newInstance("generated");
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(bbb, writer);
Run Code Online (Sandbox Code Playgroud)

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

 <bbb>
    <inner child1/>
    <inner child2/>
    ...
 </bbb>
Run Code Online (Sandbox Code Playgroud)

我目前无法这样做,因为marshaller大喊我没有定义@XmlRootElement.

我们实际上试图避免将模式分成2个模式的情况,其中一个是bbb,另一个是aaa导入bbb.

提前致谢!

java xml jaxb marshalling

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×2

jaxb ×2

marshalling ×2

xml ×2