Я хочу создать следующий XML при сериализации структуры классов, показанной ниже:
<C>
<D A="FrontRight"/>
<W A="Green"/>
</C>
Код Java выглядит следующим образом:
@JacksonXmlRootElement(localName = "C")
public static class Car {
public Car(List children) {
this.children = children;
}
@JacksonXmlElementWrapper(useWrapping = false)
public List children;
}
@JacksonXmlRootElement(localName = "D")
public static class Door {
@JacksonXmlProperty(localName = "A", isAttribute = true)
public String placement = "FrontRight";
}
@JacksonXmlRootElement(localName = "W")
public static class Window {
@JacksonXmlProperty(localName = "A", isAttribute = true)
public String color = "Green";
}
@JacksonXmlElementWrapper(useWrapping = false)
public List children;
}
И вызывает маппер как:
ObjectMapper mapper = new XmlMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
System.out.println(mapper.writeValueAsString(new Car(Arrays.asList(new Door(), new Window()))));
Производит этот вывод:
<C>
<children A="FrontRight"/>
<children A="Green"/>
</C>
Что я должен сделать, чтобы избавиться от children
и заставить его использовать именованные, аннотированные для классов, помещенных в список?