Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jaxb可以在没有根元素的情况下封送子元素吗?_Java_Xml_Jaxb_Marshalling - Fatal编程技术网

Java Jaxb可以在没有根元素的情况下封送子元素吗?

Java Jaxb可以在没有根元素的情况下封送子元素吗?,java,xml,jaxb,marshalling,Java,Xml,Jaxb,Marshalling,我不确定下面的问题是否适用于jaxb,但我还是会问 在某个项目中,我们使用jaxb和已定义的模式来创建xml文件的下一个结构 <aaa> <bbb> more inner children here </bbb> <bbb> more inner children here </bbb> </aaa> 因此,我们将得到下一个结果: <bbb&g

我不确定下面的问题是否适用于jaxb,但我还是会问

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

<aaa>
     <bbb>
        more inner children here
     </bbb>
     <bbb>
        more inner children here
     </bbb>
</aaa>
因此,我们将得到下一个结果:

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

...
我目前无法这样做,因为封送员喊道我没有定义@XmlRootElement

实际上,我们试图避免将模式分成两个模式的情况,一个只有bbb,另一个aaa导入bbb


提前谢谢

我可能迟到了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;
}
公共静态字符串封送处理(Bbb Bbb)抛出JAXBEException{
StringWriter StringWriter=新StringWriter();
JAXBContext JAXBContext=JAXBContext.newInstance(Bbb.class);
Marshaller jaxbMarshaller=jaxbContext.createMarshaller();
//格式化XML输出
setProperty(Marshaller.JAXB_格式化的_输出,true);
QName QName=新的QName(“com.yourModel.bbb”,“bbb”);
JAXBElement root=newjaxbelement(qName,Bbb.class,Bbb);
jaxbMarshaller.marshall(root,stringWriter);
字符串结果=stringWriter.toString();
LOGGER.info(结果);
返回结果;
}
以下是我在不使用rootElement的情况下封送/解封送时使用的文章:

这对我来说很好用。我写这封回信是为了其他寻找答案的迷失的灵魂


祝你一切顺利:)

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

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

我在这篇文章中找到了解决方案:[使用Jaxb进行碎片编组][1][1]:
javax.xml.bind.Jaxb
StringWriter stringWriter = new StringWriter();
JAXB.marshal(bbb, stringWriter);
String bbbString = stringWriter.toString();