java - Jaxb:如何生成 ObjectFactory 类?

标签 java jaxb jaxb2

我正在使用 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.in​​dex 在该包中列出要包含在 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 仅用于提供根元素信息,您可以使用 @XmlRootElement 注释您的 WebLeads 类:

@XmlRootElement(name="root-element-name")
public class WebLeads {
   ...
}

关于java - Jaxb:如何生成 ObjectFactory 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6442312/

相关文章:

java - File.delete() 仅随机删除目标文件

java - 如何向具有静态方法的类提供参数而不更改其静态限定符?

java - 无法在 JAXB 解码中映射字段,字段填充为 null

java - 如何合并两个具有相同参数的XML文件?

java - 将空字符串设置为 xsi :nil=true

java - Android Studio加载内部存储数据错误

java - JAXB:泛型的多态性

java - 错误: Not supported: indent-number when using jaxb2-maven-plugin with jdk8

java - JAXB2 类型限制不起作用?

java - UnsatisfiedDependencyException : Error creating bean with name 'entityManagerFactory'