有没有办法将JAXB XML实体中的两个链接映射到不同的类?

时间:2011-03-10 15:01:15

标签: rest jaxb eclipselink moxy

有没有办法将JAXB XML实体中的两个链接映射到不同的类? 示例:

<restresource>
  <atom:link rel="http://myuri/rels/author" href="http://myuri/users/42" title="That's me"/>
  <atom:link rel="http://myuri/rels/customer" href="http://myuri/customers/4711" title="John Smith"/>
</restresource>

我想将带有XMLAdapter的第一个链接映射到User类,将第二个带有不同XMLAdapter的链接映射到Customer类。我尝试使用EclipseLink JAXB (MOXy)中的@XmlPath执行此操作。但是没有得到很多实验的结果,因为不可能在“rel”上定义条件路径。我知道这只能与适配器结合使用,否则定义不会是双向的。 知道如何实现这一点吗?

1 个答案:

答案 0 :(得分:1)

我们为MOXy@XmlPath添加了一个扩展程序,可以让这个用例更容易映射。在EclipseLink 2.3中,您将能够执行以下操作:

@XmlPath("atom:link[@rel='http://myuri/rels/author'])
@XmlJavaTypeAdapter(AuthorAdapter.class)
private Author author;

@XmlPath("atom:link[@rel='http://myuri/rels/customer'])
@XmlJavaTypeAdapter(CustomerAdapter.class)
private Customer customer;

今天你可以通过以下方式下载一个EclipseLink 2.3.0夜间下载(从3月22日开始)来试用feature

了解更多信息

我还将尝试整合一种与已发布的EclipseLink JAXB (MOXy)版本兼容的方法。