我有一个可以被多个客户端使用的类(即 GUI、外部系统等)。
@XmlRootElement
class A {
String field = "Hello World";
public String getField() {
return field;
}
}
对于一个客户,我不希望生成的 XML 包含类中的所有详细信息,因此我将要隐藏的详细信息标记为 XmlTransient。
@XmlRootElement
class A {
String field = "Hello World";
@XmlTransient
public String getField() {
return field;
}
}
问题在于其他客户端需要查看该数据,而现在它被隐藏了。
如果我有两个需要几乎相同数据的客户,我该如何着手满足要求?我通过扩展 A 并适本地注释以满足每个客户的需求来完成这项工作:
@XmlRootElement
class B extends A {
@XmlTransient
public String getField() {
return super.getField();
}
}
@XmlRootElement
class C extends A {
public String getField() {
return super.getField();
}
}
这可行但看起来很麻烦。还有其他方法吗?我意识到,在我展示的实例中,我可以使用 XmlJavaAdapter,但在我的实际代码中,我所指的数据可能是复合对象的一部分,而 XmlJavaAdapter 似乎不合适。
希望这一切都有意义!
最佳答案
注意:我是 EclipseLink JAXB (MOXy) JAXB (JSR-222) 的领导和成员专家组。
如 @skaffman 所述,您可以使用 MOXy 扩展来完成此用例。 MOXy 提供了将映射元数据表示为 XML 的能力。这意味着您可以提供一个作为注释的映射,以及作为 XML 的其他映射。
下面是指向单个对象模型映射到 Google 和 Yahoo 天气服务结果的示例的链接:
GitHub 上也提供了与此示例对应的代码:
关于java - 多个客户端需要不同的 JAXB 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838286/