为什么我的 xml 的 JAXB 命名空间设置为默认 ns1?
ns1
不是名称空间而是前缀。前缀不重要。例如以下文档都是等效的。foo
元素在FOO
命名空间中,元素bar
在BAR
命名空间中。
<a:foo xmlns:a="FOO" xmlns:b="BAR>
<b:bar>Hello World</b:bar>
</a:foo>
<ns1:foo xmlns:ns1="FOO" xmlns:ns2="BAR>
<ns2:bar>Hello World</ns2:bar>
</ns1:foo>
<foo xmlns="FOO" xmlns:b="BAR>
<b:bar>Hello World</b:bar>
</foo>
我究竟做错了什么?
没有什么。JAXB (JSR-222)实现不需要使用注释中指定的前缀@XmlSchema
。 EclipseLink JAXB (MOXy)确实如此,并且最近版本的 JAXB RI 似乎如此。NetBeans 7.2 中的 JAXB 版本/实现似乎是这样,而 GlassFish 3.1.2 使用的 JAXB 版本/实现却不是。
下面是我写的一篇文章的链接,该文章更详细地介绍了NamespacePrefixMapper
此处可能有用的扩展。