Используя реализацию EclipseLink MOXy JAXB, я пытаюсь использовать аннотацию @XmlPath для получения значений элемента на основе значения атрибута элемента.Я не могу заставить его работать.Поддерживается ли это?
Выдержка XML:
<Item>
...
<ItemRefFields>
<ItemRefField id="1">12345</ItemRefField>
<ItemRefField id="2">blah</ItemRefField>
</ItemRefFields>
</Item>
POJO Выдержка:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="Item")
public class Item
{
...
@XmlPath("ItemRefFields/ItemRefField[@id='1']/text()")
private String ItemRef1 = null;
@XmlPath("ItemRefFields/ItemRefField[@id='2']/text()")
private String ItemRef2 = null;
...
}
Теперь происходит то, что оба значения присваиваются ItemRef2 по очереди, напримерэто «бла» в конечном итоге является окончательным значением, но ItemRef1 никогда не получает назначенное значение.Я полагаю, что это потому, что часть значения атрибута выражения XPath ([@ id = 'x']) игнорируется.Таким образом, оба выражения XPath обрабатываются как одинаковые, и кажется, что это приводит к тому, что выражение сначала сопоставляется с ItemRef1, а затем с ItemRef2, причем ItemRef2 перезаписывает сопоставление ItemRef1, поэтому ItemRef2 выигрывает.
Я надеюсь, что это вызвано синтаксической проблемой с моей стороны.Любой совет будет оценен.
Спасибо, Кевин