使用xml输出中缺少的jaxb marshal xmlns属性

时间:2012-06-14 01:13:57

标签: xml xsd jaxb xml-namespaces

我有一些jaxb对象是从我创建的xsd生成的。以前,当我编组内容时,xml输出如下所示:

<report xmlns="urn:com-test-person-data:v3">
<person-data>
    .......(Data)
</person-data>
</report>

我最近从Windows机器上的编码转换到了Mac。我正在使用的jaxb对象没有任何变化。但现在我的编组输出看起来像这样。

<report>
<person-data>
    .......(Data)
</person-data>
</report>

我已经尝试过挖掘一下,看看什么可以删除xmlns属性,但没有运气。我使用该属性来检查我的模式的使用版本,所以它在输出的xml片段中非常重要。

这是我调用编组程序的代码片段:

final JAXBContext context = JAXBContext.newInstance(Report.class);
final Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); //$NON-NLS-1$
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(reportJaxBObject, sw);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此问题通常是package-info.java未编译或与其他模型类打包在一起的结果。 package-info类是指定@XmlSchema的地方,其中包含名称空间信息。