Сокращение количества необходимых классов JAXB - PullRequest
1 голос
/ 22 декабря 2011

У меня есть XML, который выглядит следующим образом:

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

Обычный способ JAXB для этого состоит в том, чтобы иметь два класса.Один для игрока;один для фитнеса.Я думаю, что это излишне.В любом случае, я мог бы просто иметь класс Player с атрибутом Fitness с умным использованием аннотаций, чтобы покрыть это?

Кроме того, скажите, что я только беспорядочный.У меня есть только интерес фитнес / скорость.Меня не интересует фитнес / сила.Мне бы очень хотелось иметь только атрибут скорости в моем классе Player JAXB.Есть ли еще способ сделать это?

Заранее спасибо.

1 Ответ

1 голос
/ 22 декабря 2011

Примечание: Я 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;

}

Для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...