JAXB Marshaller - 如何禁止xmlns命名空间属性?

时间:2012-03-22 19:36:52

标签: java xml jaxb maven-jaxb2-plugin

我使用JAXB2为使用maven 3,jaxb2,FIXML模式和maven-jaxb2-plugin的独立Java应用程序生成XML。当我编组XML时,输出根元素中包含xmlns属性。如何删除它?

发件人:

<root ... xmlns="http://www.fixprotocol.org/FIXML-4-4">...</root>

<root ... >...</root>

修改

package-info.java

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.fixprotocol.org/FIXML-4-4", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.package;

3 个答案:

答案 0 :(得分:1)

因此,如果您不希望包含命名空间信息,则可以从@XmlSchema中删除package-info.java注释。

这有点打破了你的自动构建,虽然你说这是从maven插件自动生成的。

建议您查看插件选项,看看是否可以从输出中删除它,或者您必须使用一些额外的插件来删除此行,或者只是一起删除package-info.java。

问题 - 您是否要将此XML传递给期望包含命名空间信息的服务?我想我对你为什么要剥离命名空间信息感兴趣。

答案 1 :(得分:0)

现在通过从生成的jaxb2代码中删除对命名空间“http://www.fixprotocol.org/FIXML-4-4”的所有引用来解决该问题。这很粗糙。我希望有一种更自动化的方式。

答案 2 :(得分:0)

为了自动化流程,您只需从源xsd文件中删除属性 targetNamespace