如何使用JAXB将子元素属性绑定到字段?

时间:2013-07-02 10:52:38

标签: java xml jaxb

给出以下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创建额外的类。

2 个答案:

答案 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