我对JAXB的这两个方面感到困惑。
据我所知,当将冒号分隔的包名称作为JAXBContext的newInstance
方法的上下文路径传递时,JAXB会将这些包下的所有类添加到其作用域中,以便在marshall / unmarshall /等操作中使用验证...等
@XmlSeeAlso注释指示JAXBContext绑定类。我见过的所有例子都使用这个注释来指定它的子类(我实际上无法说明原因)。
以下是我的问题:
1-如果由类引用的类,也可以省略@XmlSee 注释在传递给JAXBContext
newInstance
的包中 方法2-如果上述情况属实,那么为什么我们在第一个中需要这个注释 在那里,我们可以简单地将包含我们需要的类的所有包传递给
newInstance
功能3-如果上述情况不属实,我们是否只能使用包含top的软件包 级别类传递给
newInstance
,并使用注释@XmlSeeAlso来引用所有 这些班的孩子?
答案 0 :(得分:1)
1-如果由类引用的类,也可以省略@XmlSee 注释在传递给JAXBContext newInstance的包中 方法
是的,@XmlSeeAlso
用于指示JAXBContext
查找newInstance()
未加载的类。要让JAXBContext
了解所使用的子类,您可以使用@XmlSeeAlso
指定或传递newInstance
方法中的所有子类。
2-如果以上是真的,那么为什么我们需要这个注释 第一个地方,我们可以简单地传递所有包含的包 我们需要newInstance函数的类吗?
@XmlSeeAlso
方法主要用于您自己创建JAXB类时。当您使用XSD-> JAXB方法时,首选JAXBContext.newInstance()
并将所有包分隔为:
。