使用JAXB时,你总是需要一个ObjectFactory类吗?使用JAXB时,你总是需要一个ObjectFactory类吗?
没有它,我得到这个异常:
javax.xml.bind.JAXBException: “com.abc” 犯规含有ObjectFactory.class或 jaxb.index
我gather该ObjectFactory可以矫枉过正。但鉴于这个例外,我猜你需要它..但不知道为什么?
使用JAXB时,你总是需要一个ObjectFactory类吗?使用JAXB时,你总是需要一个ObjectFactory类吗?
没有它,我得到这个异常:
javax.xml.bind.JAXBException: “com.abc” 犯规含有ObjectFactory.class或 jaxb.index
我gather该ObjectFactory可以矫枉过正。但鉴于这个例外,我猜你需要它..但不知道为什么?
当您使用工厂方法JAXBContext.newInstance(String)
时,您会得到该异常,您将包名称作为参数传入。这确实要求ObjectFactory
在那里,否则,JAXB不知道要处理哪些类。
如果您没有ObjectFactory
,则需要使用JAXBContext.newInstance(Class...)
,而不是传入带注释的类的显式列表以添加到上下文中。
代替ObjectFactory,您可以包含一个jaxb.index文件,该文件是一个文本文件,其中包含一个新的Java类分行列表。
对于使用jaxb.index文件中看到的例子:
我们总是有相同的根元素。从根目录我们有一个很大的classes/xml元素层次结构。那么我们可以只使用'JAXBContext.newInstance(OurRoot.class)'?或者我们是否需要传递所有*我们课程的列表? – 2010-04-19 13:33:31
@Marcus:通常你只需要传入根类,除非在注释中有多态关联,在这种情况下,你还需要传递它们。在'ObjectFactory'中生成的方法看起来有点奇怪,在大多数情况下,你根本不需要使用它们,你可以直接实例化。它们对创建'JAXBElement'包装非常有用。 – skaffman 2010-04-19 13:47:43