多个包的JAXB命名空间前缀配置?

时间:2013-11-01 07:50:43

标签: java jaxb xml-namespaces

首先,我想说我已阅读http://blog.bdoughan.com/2011/11/jaxb-and-namespace-prefixes.html

我的应用程序中有多个包,比如

my.xml.pkg1 ,
my.xml.pkg2,
my.xml.pkg3,
my.xml.pkg4

  1. 我是否需要将package-info.java放在每个包中?例如, pkg1,pkg2等中的package-info.java?
  2. 或者全局package-info.java可以保存所有信息。像我一样 想把package-info.java文件放在my.xml包中 让它发挥作用。
  3. 如果这个答案是“是”,那么下一个问题就出现了。如果我把全球化 package-info.java然后我应该如何指定XmlSchema?什么 应该是命名空间字段吗?

  4. 是否可以在一个包中包含多个XmlRootElement? 就像我在my.xml.pkg1中有2个包含XMLRootElement的java类,每个Root元素都有不同的名称空间?在这种情况下,我们如何指定模式?

1 个答案:

答案 0 :(得分:1)

以下是我对你问题的回答:

  

1 - 我是否需要将package-info.java放在每个包中?例如,pkg1,pkg2等中的package-info.java?

package-info.java是一种用于应用包级别元数据的java机制。因此,放在一个包中的注释不会影响另一个包,这意味着您需要为每个包执行操作。

  

2 - 或者全局package-info.java可以保存所有信息。就像我想把package-info.java文件放在my.xml包中并make   它有效。

不,请参阅问题1的答案。

  

3 - 如果这个答案是“是”,则会出现下一个问题如果我放了一个全局的package-info.java那么我应该如何指定XmlSchema?   命名空间字段应该是什么?

见问题1的答案。

  

4 - 是否可以在一个包中包含多个XmlRootElement?就像我在my.xml.pkg1中有2个包含XMLRootElement的java类   并且每个Root元素都有不同的命名空间?在这种情况下我们如何   指定架构?

是的,每个包可能有多个@XmlRootElement。每个类只能有一个,并且名称和命名空间的组合在用于引导JAXBContext的类的范围内必须是唯一的。

如果您有与不同名称空间相对应的元素,那么就XML Schema而言,您将拥有导入其他模式的模式,因为单个XML模式对应于单个名称空间。