Java 是否在编组时禁用JAXB命名空间子项?

Java 是否在编组时禁用JAXB命名空间子项?,java,xml,jaxb,marshalling,xml-namespaces,Java,Xml,Jaxb,Marshalling,Xml Namespaces,我有一个XSD模式,它使用名称空间来区分同名元素。我正在使用Maven插件jaxb2 Maven插件生成JAXB绑定 在编组我的JAXB对象时,JAXB用根节点中的标识符替换每个名称空间。XML仍然有效,但应用程序用户的可读性(或可识别性)受到影响 它应该是什么样子的: <Root xmlns="http://somenamespace.com/Root"> <Config xmlns="http://somenamespace.com/ConfigTypeOne"/&

我有一个XSD模式,它使用名称空间来区分同名元素。我正在使用Maven插件jaxb2 Maven插件生成JAXB绑定

在编组我的JAXB对象时,JAXB用根节点中的标识符替换每个名称空间。XML仍然有效,但应用程序用户的可读性(或可识别性)受到影响

它应该是什么样子的:

<Root xmlns="http://somenamespace.com/Root">
    <Config xmlns="http://somenamespace.com/ConfigTypeOne"/>
    <Config xmlns="http://somenamespace.com/ConfigTypeTwo"/>    
</Root>

编组后的外观:

<Root xmlns="http://somenamespace.com/Root" xmlns:ns1="http://somenamespace.com/ConfigTypeOne" xmlns:ns2="http://somenamespace.com/ConfigTypeTwo">
    <ns1:Config/>
    <ns2:Config/>    
</Root>


有没有一种方法可以告诉JAXB跳过名称空间的替换,并按照XSD模式中定义的方式处理XML?

查看我对一个类似问题的回答:谢谢,这很有效!唯一的问题是Marshaller.JAXB_格式化的_输出属性似乎被完全忽略。XML是在没有缩进的情况下编写的。有没有办法做到这一点?以下问题的答案可能会有所帮助:再次感谢。但这对我的情况没有什么帮助。问题似乎是针对StAX的,答案似乎与JAXB的JAXB_格式化的_输出属性相当。不幸的是,CustomXMLStreamWriter的方法似乎影响了此属性。
JAXB\u格式化的\u输出
属性在编组到
XMLStreamWriter
时不适用。但是,我给您的第一个链接利用了
XMLStreamWriter
来解决名称空间问题,第二个链接解决了格式化问题,因此它们结合在一起应该可以为您提供所需的答案。