【发布时间】:2014-04-01 11:13:00
【问题描述】:
当使用 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>
【问题讨论】:
-
您能发布一个预期的 XML 示例吗?
-
@Priyesh 我已经更新了问题
-
您可能会发现这很有用。 jaxb.java.net/nonav/2.2.1/docs/vendorProperties.html。检查文档中的方法
getPreDeclaredNamespaceUris()。 -
谢谢,但是这种方法对于逆问题很有用:jaxb 1.0,它或多或少地像我需要的那样工作 - 在首先需要它的元素上声明命名空间。然后可以使用此方法在根元素处设置命名空间声明。
-
如果从方法中返回一个空数组会发生什么?
标签: java xml jaxb marshalling xml-namespaces