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

JAXB解组期间,ObjectFactory的作用是什么?

丌官坚秉
2023-03-14
问题内容

我正在使用JAXB 2.2.2解析简单的XML-REST流。这是一段代码:

JAXBContext jc = JAXBContext.newInstance( "com.example.entities" );
Unmarshaller u = jc.createUnmarshaller();
r = (Response )u.unmarshal( inputStream );

ObjectFactory类:

@XmlRegistry
public class ObjectFactory {

    public Response createRsp() {
        return new Response();
    }
}

回应类别:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="rsp")
@XmlType
public class Response { ... }


com.example.entities”必须包含ObjectFactory类或jaxb.in​​dex。我想使用ObjectFactory类来确定一些pojo初始化,但是这些类从未使用:Response类始终直接由class.newInstance()实例化。这有什么问题吗?


问题答案:

您可以利用@XmlType注释来控制如何创建对象:

@XmlType(factoryClass=ObjectFactory.class, factoryMethod="createRsp")
public class Response {
}

想要查询更多的信息

  • http://bdoughan.blogspot.com/2011/06/jaxb-and-factory-methods.html


 类似资料:
  • 问题内容: 我定义了以下内容: (类是微不足道的,并见下文或点击这里。) 我正在解组以下XML: 我真诚地希望JAXB 在解组期间会调用my 和method。但这不会发生。该构造是通过反射直接调用的,相应的不被使用的方法。 我的问题是: 为什么在解组期间不被调用? 不是吗 还是ist只是持有/ 声明的假人? 我也检查了这个问题: JAXB解组期间,ObjectFactory的作用是什么? 解决方案

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

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

  • 我试图散集XML。 这就是我的XML的样子 我正在尝试获取Obj123下的Id和姓名。然而,当我运行我的解组命令时,我得到了以下错误。 我的代码在主类中如下所示: 我的Obj123类如下所示: 我认为通过设置我的XMLRootElement,我应该能够跳过XML的前2行,但这似乎并没有发生。有什么想法吗? 编辑: 我的 JAXB 上下文就是这样制作的:

  • 这是我的包信息级别映射 这是我的输入xml(只是根元素) 您可以注意到URI“http://www.company.com/commons“使用不同的前缀映射。<br>解组工作正常,使用 在一些输入修改之后,我需要将文件持久化(使用原始的名称空间前缀)。 问题是:< br >在解组期间,有什么方法可以检索名称空间/前缀映射吗?

  • 即使在尝试了许多事情之后也无法找到解决方案,因此在此处发布希望获得一些解决此问题或修复方法。 基本上,如果 ,但是除了< code>Map之外,我还需要一个< code>@XmlElement。因此有一个字段用< code >(映射字段)@XmlPath(" .)和另一个带有< code>@XmlElement的字符串字段,然后我想执行< code >解组。 以下是我尝试 : 下面是它将被< co