JAXB编组:更改应该声明命名空间的元素

时间:2014-04-01 11:13:01

标签: java xml jaxb marshalling xml-namespaces

使用JAXB编组时, 影响 哪个元素命名空间/命名空间前缀声明

目前,所有名称空间前缀都在根元素处声明,但由于处理我的XML的系统的奇怪限制,我需要在子元素处声明它们(这仍然会产生有效的xml文档)。

2006年official jaxb issue tracker and declined by a developer提出了类似但不完全相同的请求。我想知道这种情况是否同时发生变化,或者是否存在某些变通方法。

感谢任何帮助。

示例:

JAXB编组创建以下XML:

<outer xmlns:ns1="http://mydomain">
  <inner>
     <ns1:data/>
  </inner>
</outer>

虽然我需要有类似的东西 (ns1前缀在根元素处声明

<outer>
  <inner xmlns:ns1="http://mydomain">
     <ns1:data/>
  </inner>
</outer>

1 个答案:

答案 0 :(得分:1)

JAXB (JSR-222)没有提供控制命名空间声明发生位置的方法。 JAXB提供程序倾向于将名称空间放在根元素上(出于性能原因),但它们不是必需的。

下面是我给类似问题的答案的链接,其中XMLStreamWriter被扩展以控制何时报告名称空间声明。