Мое приложение получает очень длинный XML-документ, и я хотел бы использовать его для заполнения объекта Java.
Однако, несмотря на то, что в XML существует множество глубоко вложенных элементов, меня интересуют лишь некоторые из них. Меня также интересует только переход от XML к Java. Мне не нужна возможность сортировки моего Java-объекта обратно в XML.
Я хотел бы использовать для этого JAXB, если это возможно, поскольку зависимости моего приложения уже включают Eclipselink MOXy. Однако я не уверен, как получить только несколько глубоко вложенных значений элементов. Я посмотрел на аннотацию @XmlElementWrapper
и подумал об использовании ее для аннотирования полей моего класса Java следующим образом:
...
@XmlElementWrapper(name="LEVEL_1/SUBLEVEL_1/YET_ANOTHER_SUBLEVEL")
@XmlElement(name="STATUS")
private String statusCode;
...
Однако я не знаю, допустим ли этот атрибут name
. Я все равно не дошел до этого... компилятор говорит мне, что @XmlElementWrapper
можно использовать только тогда, когда переменная-член является типом коллекции. Большинство полей, которые я пытаюсь извлечь, представляют собой одиночные значения.
Я попытался пропустить аннотацию @XmlElementWrapper
и посмотреть, поймет ли только @XmlElement
значения XPath:
...
@XmlElement(name="LEVEL_1/SUBLEVEL_1/YET_ANOTHER_SUBLEVEL/STATUS")
private String statusCode;
...
Хотя это не вызывает ошибки компиляции, это тоже не работает. Во время выполнения Eclipselink просто создает экземпляр моего объекта с null
в этом поле.
Есть ли что-то, что мне не хватает, или то, что я пытаюсь сделать, вообще возможно с JAXB?