Получение списка <String>из XML с использованием JAXB (Moxy) - PullRequest
3 голосов
/ 22 марта 2012

Я использую jdk1.6 и eclipselink-2.3.2.v20111125-r10461

У меня есть XML похожий на:

</p> <pre><code><alpha> <beta> <omega>abcd</omega> <gamma> <delta>001</delta> <delta>002</delta> <delta>003</delta> </gamma> </beta> </alpha>

Мой аннотированный компонент выглядит так:

</p> <pre><code>@XmlRootElement(name = "alpha") @XmlAccessorType(XmlAccessType.FIELD) public Class Alpha { @XmlPath("beta/omega/text()") private String omegaValue; @XmlElement(name = "delta") @XmlElementWrapper(name = "gamma") private List<String> deltaList; public String getOmegaValue() { return omegaValue; } public void setOmegaValue(String omegaValue) { this.omegaValue = omegaValue; } public List<String> getDeltaList() { return deltaList; } public void setDeltaList (List<String> deltaList ) { this.deltaList = deltaList ; } }

в моем тестовом коде я делаю следующее, чтобы проверить список, ноэто пусто.</p> <pre><code>System.out.println(alphaInstance.getDeltaList().size());//returns 0!! for (String deltaValue: alphaInstance.getDeltaList()) {//empty!! System.out.println(deltaValue); }

Здесь что-то не так?OmegaValue работает отлично.Пожалуйста, помогите, спасибо.

1 Ответ

2 голосов
/ 22 марта 2012

В вашем сопоставлении для свойства deltaList отсутствует бета-уровень.Вы можете использовать аннотацию @XmlPath и сделать следующее:

@XmlPath("beta/gamma/delta/text()")
private List<String> deltaList;

Для получения дополнительной информации

...