我正在使用Java 6,JaxB 2和SpringSource Tool Suite(与Eclipse相同)。我编写了两个Java类,并使用JaxB从中生成XML模式。但是,我注意到为了使用JaxB从Java对象生成XML文档的功能,我需要一个ObjectFactory。
final Marshaller marshaller = jaxbContext.createMarshaller();
// Here is where I don't have an ObjectFactory defined
final JAXBElement<WebLeads> webLeadsElement
= (new ObjectFactory()).createWebLeads(webLeadsJavaObj);
我如何生成ObjectFactory而不丢掉我现在已经拥有的类?
最佳答案
更新
这个问题可能是指ObjectFactory
在创建JAXBContext
中的作用。如果在上下文路径上引导JAXBContext
,则它将在该位置检查ObjectFactory以确定该包中的类:
如果您没有
ObjectFactory
,但仍然希望在上下文路径上创建JAXBContext
,则可以在该软件包中包含一个名为jaxb.index
的文件,列出要包含在JAXBContext
中的文件(被引用的类将自动插入):或者,您可以在类数组而不是上下文路径上引导
JAXBContext
:是ObjectFactory必需的
不需要
ObjectFactory
,尽管即使从Java类开始,在某些用例中,您也可以利用带 @XmlRegistry
注释的相似类来使用 @XmlElementDecl
注释。创建JAXBElement的实例
您总是可以直接创建
JAXBElement
:final JAXBElement<WebLeads> webLeadsElement = new JAXBElement<WebLeads>(
new QName("root-element-name"),
WebLeads.class,
webLeadsJavaObj);
替代JAXBElement的
或者因为JAXBElement仅用于提供根元素信息,所以可以用
WebLeads
注释@XmlRootElement
类:@XmlRootElement(name="root-element-name")
public class WebLeads {
...
}