当前位置: 首页 > 面试题库 >

Jaxb:如何生成ObjectFactory类?

孟宏才
2023-03-14
问题内容

我正在使用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在上下文路径上引导a
,则它将在该位置检查ObjectFactory以确定该包中的类:

  • http://bdoughan.blogspot.com/2010/09/processing-atom-feeds-with-jaxb.html

如果您没有在上下文路径上ObjectFactory创建一个,但仍希望JAXBContext在路径上创建您,则可以jaxb.index在该包中包含一个名为的文件,列出要包含在其中的文件JAXBContext(被引用的类将自动插入):

  • http://bdoughan.blogspot.com/2010/08/using-xmlanyelement-to-build-generic.html

另外,您可以引导您JAXBContext到一系列类而不是上下文路径上:

  • http://bdoughan.blogspot.com/2010/11/jaxb-and-inheritance-using-xsitype.html

是否需要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 {
   ...
}


 类似资料:
  • 问题内容: 我正在使用JAXB在Maven中使用JAXB插件从XSD生成bean。一切正常,希望代码包含每个字段的isSetXXXXXX()方法。 例如 对于字段 firstName ,它将产生以下代码: 这是isSetFirstName()方法引起的问题,我不希望JAXB生成这些问题。 有没有办法阻止这种行为? 谢谢。 更新 解决此问题:问题出在xjb文件中,generateIsSetMetho

  • 问题内容: 我是使用JAXB的新手,并且使用JAXB 2.1.3的xjc从我的XML模式生成一组类。除了为我的架构中的每个元素生成一个类之外,它还创建了一个ObjectFactory类。 似乎没有什么阻止我直接实例化元素的,例如 而教程似乎更喜欢 如果查看ObjectFactory.java,我会看到: 那怎么办?为什么我还要麻烦保持ObjectFactory类?我假设如果我从更改后的模式重新编译

  • JAXB为每个属性生成@XmlAttribute注释。例如,属性 转换为带注释的java对象属性 但是,如果属性在名称中没有下划线,则@Xml属性中的名称字段丢失(因此##默认)。我想自定义JAXB绑定,以便也生成没有下划线的名称的注释。有什么建议吗? 谢谢!Johannes

  • 我使用jaxb2 maven插件从给定的XSD生成JaxB类。它很好用。但现在我想使用java。util。在生成的类中是可选的。但是JaxB生成的类没有可选项。所以我不得不对每个变量进行空检查。 有人知道必须如何配置jaxb2 maven插件才能使用java吗。util。可选择的 谢谢你的帮助!

  • 我有一个maven模型项目,我通过maven命令-clean install生成jaxb类,jaxb类在目标文件夹下生成,jar文件在目标文件夹下生成。m2存储库文件夹。 现在在我的另一个项目中,将这个jar添加为具有适当组id和artifactId的依赖项。 但我得到的是生成的jaxb类的ClassNotFoundException和编译错误。 我正在更新我的问题以添加更多细节。 模型项目的Po

  • 问题内容: 使用JAXB时是否始终需要ObjectFactory类? 没有它,我得到这个异常: javax.xml.bind.JAXBException:“ com.abc”不包含ObjectFactory.class或jaxb.in​​dex 我搜集到的ObjectFactory可以说是矫kill过正。但是鉴于这个例外,我猜您需要它。.但不确定为什么吗? 问题答案: 当您使用factory方法时