我使用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;
答案 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