Я пытаюсь разобрать XML в Java класс и затем отправить его на внешний интерфейс. Я использую Springboot 2.2.5, формат данных Jackson xml 2.10.2
У меня есть следующий XML файл:
<root xmlsn="...">
<result status="1" outs="6" val="0" pic="7"/>
</root>
Я ожидаю этот ответ от бэкэнда во внешнем интерфейсе:
{
status: 1,
outs: 6,
val: 0
pic: 7
}
Ну, это очень просто.
Посмотрим, что у меня есть:
Класс для элемента root:
@JacksonXmlRootElement(namespace = "...", localName = "root")
public class SetXmlResponseDto {
@JacksonXmlProperty(localName = "result")
private ResultPropertyDto result;
}
И затем класс для элемента результата ResultPropertyDto:
public class ResultPropertyDto {
@JacksonXmlProperty(localName = "val", isAttribute = true)
private String value;
@JacksonXmlProperty(localName = "status", isAttribute = true)
private String status;
}
// Я удалил некоторые части кода для пивоварения (сеттер, геттер)
Но результат этого следующий:
{
result: {
status: 1,
....
}
}
Вероятно, хорошо бы также упомянуть, как я его строю?
ObjectMapper objectMapper = new XmlMapper();
objectMapper().readValue(new URL(urlAddress), SetXmlResponseDto.class);
Конечно, я мог бы просто позвонить SetXmlResponseDto.getStatus()
перед отправкой его во внешний интерфейс, и вывод будет точно таким же ожидается, но мне было интересно, есть ли способ, как достичь требуемого результата без создания подкласса ResultPropertyDto
??
Представьте, что вы вложили 4 раза в элемент XML и хотите отобразить только 1 атрибут этого вложенного элемента. Я должен был бы создать 4 класса для этого ??
Спасибо за ответы