减少所需的JAXB类的数量

时间:2011-12-21 22:58:34

标签: xml jaxb

我有一个类似这样的XML:

<player>  
<id>402</id>  
<name>Sean</name>  
<fitness>  
<speed>good</speed>  
<strength>super</strength>  
</fitness>  
</player> 

正常的JAXB方式是拥有两个类。一个玩家;一个健身。我觉得这太过分了。反正我有没有一个具有Fitness属性的Player类,并且智能地使用注释来覆盖它?

另外,说我只是解组。我只对健身/速度感兴趣。我对健身/力量毫无兴趣。我真的很想在我的Player JAXB类中只有一个speed属性。反正有吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB 2 (JSR-222)专家组的成员。

skaffman所述,MOXy具有可用于此用例的@XmlPath扩展名:

import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder={"id", "name", "speed", "strength"})
public class Player {

    private String id;
    private String name;

    @XmlPath("fitness/speed/text()")
    private String speed;

    @XmlPath("fitness/strength/text()")
    private String strength;

}

了解更多信息