我有一些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);
有什么想法吗?
答案 0 :(得分:0)
此问题通常是package-info.java
未编译或与其他模型类打包在一起的结果。 package-info
类是指定@XmlSchema
的地方,其中包含名称空间信息。