【发布时间】:2014-04-29 08:49:22
【问题描述】:
我遇到了 JAXB 编组问题。我有一组从一些 XSD 生成的类。我需要能够动态更改命名空间 URI - 在编组对象时。
我只是使用了自己的 QName,比如
new JAXBElement<MyType>(new QName(uri, "Doc") ....
它有效。但是问题是MyType 由几个其他类组成,我也想为它们更改命名空间(实际上所有这些元素都使用同一个命名空间,我只想更改这个命名空间的 URI )。
生成的 XML 仅为我的“根”元素更改命名空间,我为其指定 QName,它看起来像这样
<ns2:Dok>
<ns1:Elem>a</ns1:Elem>
</ns2:Dok>
ns2 是我用 QName 提供的新命名空间,但 ns1 仍然是“旧命名空间”,如果在生成类的包信息中写入)。 我的问题是 - 如何永久更改命名空间?如何更改所有元素的命名空间 URI,如何使我的新 QName 也适用于所有子元素?
【问题讨论】: