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

Udo*_*Udo 6 java xml jaxb

给出以下XML

<mappings>
  <map>
     <source srcAttr="oof">foo</source>
     <target trgAttr="rab">bar</target>
  </map>
  <map>
    ...
Run Code Online (Sandbox Code Playgroud)

是否有可能与JAXB解组的<map>元素为单个类Map 含有值属性<source><target>

@XmlRootElement
class Map {

   @XmlElement
   String source;

   @???
   String srcAttr;

   @XmlElement
   String target;

   @???
   String trgAttr;
}
Run Code Online (Sandbox Code Playgroud)

我不想为Source和target创建额外的类.

bdo*_*han 5

注意: 我是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;

}
Run Code Online (Sandbox Code Playgroud)

想要查询更多的信息

  • 这是真正的奢侈;-)不幸的是,我必须坚持勇敢的标准 (2认同)

Tal*_*ala 2

是的!只需替换???@XmlAttribute注释即可。

另外,这可能会有所帮助jaxb 示例和这个oracle 示例