目前我正在使用以下代码将 JAXB 对象编组到输出流
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
ByteArrayOutputStream out = new ByteArrayOutputStream();
marshaller.marshal(new JAXBElement(new QName("hard_coded_namespace", clazz.getSimpleName()), clazz, obj), out);
我想将“hard_coded_namespace”替换为 JAXB“obj”中包含的命名空间(或其属性之一,它们目前应该共享相同的 NS)。
任何想法如何在编组之前获取 NS 信息?在输出流中,出现命名空间。所以他们在“obj”的某个地方。
[更新] 正如下面的答案所指出的,我不需要设置 JAXB_FRAGMENT 属性。我将其更改为:
JAXB.marshal(new JAXBElement<T>(new QName("hard_coded_namespace", rootName), clazz, jaxbObject), out);