给出以下XML
<mappings>
<map>
<source srcAttr="oof">foo</source>
<target trgAttr="rab">bar</target>
</map>
<map>
...
JAXB是否可以将<map>
元素解组为单个类Map
包含<source>
和<target>
的值和属性?
@XmlRootElement
class Map {
@XmlElement
String source;
@???
String srcAttr;
@XmlElement
String target;
@???
String trgAttr;
}
我不想为Source和target创建额外的类。
答案 0 :(得分:4)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。
您可以使用MOXy的@XmlPath
扩展来处理此用例:
import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlPath;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
class Map {
String source;
@XmlPath("source/@srcAttr")
String srcAttr;
String target;
@XmlPath("target/@trgAttr")
String trgAttr;
}
了解更多信息
答案 1 :(得分:2)
是的!只需将???
替换为@XmlAttribute
注释。
这也可能有用[{3}}和jaxb example