Я должен разобрать XML в объектах Java и XML содержит развернутый список объектов, который выглядит как:JAXB распаковать развернутый список объектов
<main>
<mainPropA>Main Property A</mainPropA>
<mainPropB>Main Property B</mainPropB>
<elements>
<propA>Property A1</propA>
<propB>Property B1</propB>
<propA>Property A2</propA>
<propB>Property B2</propB>
...
</elements>
</main>
Так что в этом случае у меня есть Java-код, который должен выглядеть :
public class MainClass {
private String mainPropA;
private String mainPropB;
private List<Element> elements;
}
public class Element {
private String propA;
private String propB;
}
Не могу понять, как это сделать.
Я пробовал следующее сопоставление и могу получить первый элемент, который будет заполняться в списке, но не другие.
@XmlRootElement(name = "main")
@XmlAccessorType(XmlAccessType.FIELD)
public class MainClass {
private String mainPropA;
private String mainPropB;
@XmlElement(name = "elements")
private List<Element> elements;
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Element {
private String propA;
private String propB;
}
Я пробовал различные комбинации аннотаций, но выше аннотации получила мне ближе видеть нечто иное, чем нуль.
Есть ли способ заставить это работать?
Я не могу изменить XML, который приходит ко мне, так что это не так.
Я использую JAXB, но никак не привязан к нему. Также используйте Java 7, если это имеет значение.
Хмм .. попробовал это, и она работает с моим образцом XML. Мне нужно было бы создать вспомогательные методы, чтобы вытащить объект из элементов списка (Элемент 1 состоит из propA.get (0) и propB.get (0)), но это выполнимо. Я беспокоюсь, когда у меня есть несбалансированные свойства элемента. Таким образом, у меня есть Недвижимость 1a Недвижимость 2a Недвижимость 2b . Первый элемент не имеет свойства B, поэтому второй элемент будет иметь propB как первый в списке. Я не знаю, как обойти это. –
Philip
Да, разделить задачу 1) извлечь информацию 2) интерпретировать ее –
Это работает до тех пор, пока у меня есть четное количество свойств, поэтому отмечаю это как ответ. Если третья сторона вернется и говорит, что они не гарантируют, что каждая собственность всегда будет там, тогда что-то еще нужно будет сделать. – Philip