图片我有一个像<someElement a="" b="" number="1" scale="meters"><child/></someElement>
比例和数字总是一起出现,但它们没有在一个独占元素中定义。
将someElement
元素解组为SomeElement
java实例时,我希望SomeElement
类中的单个成员代表number
和scale
。
目前,数字和比例都是属性,然后afterUnmarshall()
方法用于计算一个数字。
如果没有两个成员字段的大小和比例,有没有办法做到这一点?也许用XmlAdapter
?在这种情况下我该如何使用它?
答案 0 :(得分:1)
this question的答案似乎与您尝试做的事情相符。或者至少有些反过来。因此,您可以创建使用XmlAdapter取消/编组的自定义类型,也可以使用getter / setter逻辑进行调整。
答案 1 :(得分:1)
注意:我是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;
}
了解更多信息