给定以下 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;
}
我不想为源和目标创建额外的类。
最佳答案
注意:我是 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;
}
了解更多信息
关于java - 如何使用 JAXB 将子元素属性绑定(bind)到字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423679/