Джексон FasterXML POJO в список XML

Я использую реализацию FasterXML Jackson для преобразования вывода POJO в XML с помощью пакета xml-databing. Я пытаюсь добиться этого результата:

<MyRequest>
 <MySubRequest>4</MySubRequest>
 <MySubRequest>5</MySubRequest>
</MyRequest>

Мои занятия:

public class MySubRequest {

@JacksonXmlText
private String id;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public MySubRequest(String id) {
    super();
    this.id = id;
}

}

А также:

@JacksonXmlRootElement
public class MyRequest {

private Collection<MySubRequest> MySubRequest;

public Collection<MySubRequest> getRequests() {
    return MySubRequest;
}

public void setRequests(Collection<MySubRequest> requests) {
    this.MySubRequest = requests;
}

}

Я тестирую это с помощью:

ObjectMapper mapper = new XmlMapper();
MyRequest entity = new MyRequest();
Collection<MySubRequest> myIds = new ArrayList<>();
myIds.add(new MySubRequest("12"));
myIds.add(new MySubRequest("34"));
entity.setRequests(myIds);
mapper.writeValue(System.out, entity);

Но вывод:

<MyRequest xmlns="">
 <requests>
  <requests>12</requests>
  <requests>34</requests>
 </requests>
</MyRequest>

Еще одна вещь, которую я хотел бы знать, - это как заставить вывод быть чувствительным к регистру, то есть имена переменных в верхнем регистре.


person breakline    schedule 03.08.2015    source источник


Ответы (1)


Вы можете использовать аннотацию JacksonXmlElementWrapper, чтобы игнорировать оболочку. Просто используйте его как:

@JacksonXmlRootElement
class MyRequest {


    private Collection<MySubRequest> mySubRequest;

    public Collection<MySubRequest> getRequests() {
        return mySubRequest;
    }

    @JacksonXmlProperty(localName = "MySubRequest")
    @JacksonXmlElementWrapper(useWrapping = false)
    public void setRequests(Collection<MySubRequest> requests) {
        this.mySubRequest = requests;
    }

}

Здесь я использовал аннотацию JacksonXmlProperty, чтобы использовать имя элемента как «MySubRequest» в xml.

person Sachin Gupta    schedule 03.08.2015