【问题标题】:Marshalling to an existing object using JAXB使用 JAXB 编组到现有对象
【发布时间】:2012-11-17 09:00:44
【问题描述】:

是否可以将 XML 直接编组到现有对象并仅更新特定字段?

我只想修改客户端请求的某些字段。

任何指针?

【问题讨论】:

  • 可以通过反射来完成。根据类型的复杂程度,它可能非常简单。很想知道是否推荐了任何库。
  • 要解组的对象不在我的控制范围内。它们可以容纳任何类型的成员类型,也包括其他用户定义的类。在这种情况下,可以使用反射吗?我还应该使用 Introspection 吗?有没有相同的例子?
  • 这就是反思的重点:您可以在不了解任何对象的情况下检查任何对象。我今天无法编写示例,但我会看看今晚晚些时候我是否可以发布一些代码(可能在 12 小时内)。
  • 嗨,你有这个例子吗?非常感谢。

标签: java jaxb marshalling


【解决方案1】:

解决方案是:注解和反射。 没有相同的库。我在做这个任务的时候搜索了很多。

我已经做了和你想要的完全一样的事情,我已经为此做了我自己的实现。但它是专有的,所以我不能分享。

但是提示您解决方案:我使用注释来标记可重新加载的字段,然后使用反射仅重新加载可重新加载的部分。

第 1 步:再次解组 xml 以创建新对象

第 2 步:使用来自新解组的对象的新值调用旧对象的 setter 方法。

希望这会有所帮助。

【讨论】:

  • 但是我从上面的 cmets 中看到源不在您的控制范围内,那么反射可以在这里提供帮助,前提是您尝试重新加载的属性有公共 setter 方法。
【解决方案2】:

简短的回答是否定的。考虑通用解决方案,没有简单的方法来自定义 jaxb 绑定。见JAXB and class instantiation

另一种解决方案(可能更粗略)是提取您要处理的XML 部分,然后执行解组。见Java How to extract a complete XML block

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多