2013-08-14 3 views
3

Учитывая этот XML:Как читать атрибуты с помощью jaxb?

<response> 
    <detail Id="123" Length="10" Width="20" Height="30" /> 
</response> 

Это то, что у меня есть сейчас, но это не работает (я получаю пустой результат):

@XmlRootElement(name="response") 
public class MyResponse { 
    List<ResponseDetail> response; 
    //+getters +setters +constructor 
} 

public class MyResponseDetail { 
    Integer Id; 
    Integer Length; 
    Integer Width; 
    Integer Height; 
    //+getters +setters 
} 

Я делаю вызов удаленной используя RestOperations, и я хочу разобрать элемент <detail ..>. Я пробовал пройти как MyResponse, так и MyResponseDetail классов до RestOperations, но результат всегда пуст.

Какова должна быть структура объектов, соответствующая этому XML?

ответ

3

Вы должны аннотировать классы так:

@XmlRootElement 
public class Response { 

    private List<Detail> detail; 

    public void setDetail(List<Detail> detail) { 
     this.detail = detail; 
    } 
    public List<Detail> getDetail() { 
     return detail; 
    } 

} 

public class Detail { 

    private String id; 
    /* add other attributes here */ 

    @XmlAttribute(name = "Id") 
    public void setId(String id) { 
     this.id = id; 
    } 
    public String getId() { 
     return id; 
    } 

} 
+0

+1 - Отредактированный ответ исправить аксессоров класса 'Response', и удалить ненужные аннотации. –

+1

Спасибо за улучшение моего ответа! –

Смежные вопросы