xml解析JAXB:如何解组由多个标记或属性值组成的Java对象
我正在从SAX解析器转换到JAXB,无法理解如何将多个标记/属性值解组为单个(可兼容)Java POJO
我有如下xml文件:
<item validFrom="1950" validUntil="1980">
<description>some text</description>
</item>
“validFrom”和“validUntil”值应组成有效的“可变范围”POJO(见下面的定义)
我需要将其解组到的Java项定义是:
@XmlRootElement
@XmlAccessorType(XmlAcccessType.FIELD)
public class Item {
// ??? need help mapping this to be composed from "validFrom", "validUntil" attributes
private MutableRange validRange;
@XmlElement
private String description;
}
// assume all other boilerplate code exists
public class MutableRange {
private int lowerBound;
private int upperBound;
}
我曾尝试使用适配器,但它并没有同时捕获“from”和“until”两个值来创建可变范围实例。我尝试使用@XmlMixed
但没有成功
JAXB规定的实现方法是什么
一旦解决了这个问题,我将用(XmlAdapter
)扩展MutableRange
,作为包装器来创建番石榴的不可变范围对象,用@XmlJavaTypeAdapter(MutableRange.class)
将它映射到validRange
# 1 楼答案
注意:我是EclipseLink JAXB (MOXy)领导和JAXB (JSR-222)专家组成员
您可以使用MOXy的
@XmlPath
扩展来映射此用例:了解更多信息
# 2 楼答案
我会使用以下简单的方法: