Обратите внимание, это не дубликат другого вопроса, который я задал: " С помощью MOXy и XPath возможно ли демонтировать список атрибутов? " Это похоже, но не то же самое.
У меня есть XML, который выглядит следующим образом:
<test>
<items>
<item type="cookie" brand="oreo">cookie</item>
<item type="crackers" brand="ritz">crackers</item>
</items>
</test>
Это похоже на xml в моем предыдущем вопросе, за исключением того, что теперь у каждого элемента есть два атрибута вместо одного.
В моем классе:
@XmlPath("items/item/@type")
@XmlAttribute
private ArrayList<String> itemList = new ArrayList<String>();
@XmlPath("items/item/@brand")
@XmlAttribute
private ArrayList<String> brandList = new ArrayList<String>();
Благодаря ответу на мой предыдущий вопрос я могу разархивировать атрибут type
в списке.brandList
, однако, пусто.Если я закомментирую аннотации для itemList
(поэтому он не заполняется JAXB / MOXy), тогда brandList
содержит правильные значения.
Похоже, что я могу только разархивировать один атрибут в списке, используя XPath,Это по своему замыслу или я что-то неправильно настроил?
Обновление: Кажется, я не могу удалить текст и атрибут из элемента.Если мой класс отображается так:
@XmlPath("items/item/text()")
@XmlElement
private ArrayList<String> itemList = new ArrayList<String>();
@XmlPath("items/item/@brand")
@XmlAttribute
private ArrayList<String> brandList = new ArrayList<String>();
brandList
также пусто в этом случае.Если я сначала переключу порядок и карту brandList
, то itemList
будет пустым.Как будто первое отображение использует элемент, поэтому дальнейшие значения, основанные на этом элементе или его атрибутах, не могут быть прочитаны.