图像我有一个像这样的元素 <someElement a="" b="" number="1" scale="meters"><child/></someElement>
比例和数字总是一起出现,但它们不是在一个专有元素中定义的。
解码 someElement
时元素到 SomeElement
java 实例我想要 SomeElement
中的单个成员代表 number
的类和scale
.
目前,数字和比例都是属性,然后 afterUnmarshall()
方法用于计算一个数字。
有没有办法在没有两个成员字段大小和比例的情况下执行此操作?也许有 XmlAdapter
?在这种情况下我将如何使用它?
最佳答案
注意:我是EclipseLink JAXB (MOXy) JAXB 2 (JSR-222) 的领导者和成员专家组。
MOXy 提供了@XmlTransformation
扩展,允许您将 Java 字段/属性表示为多个 XML 节点。
了解更多信息
更新
或者,您可以针对此用例使用 XmlAdapter
。适配器将负责将表示数字和比例的单一类型(下面表示为 FOO)转换为具有单独的数字和比例属性的类型。您仍然需要使用 MOXy 实现来利用 @XmlPath
扩展:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SomeElement {
@XmlAttribute
private String a;
@XmlAttribute
private String b;
@XmlJavaTypeAdapter(NumberAndScaleAdapter.class)
@XmlPath(".")
private FOO numberAndScale;
private Child child;
}
了解更多信息
关于java - JAXB 在解码时将多个属性转换为一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7936104/