使用 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,因此“blah”最终成为最终值,但 ItemRef1 从未获得分配的值。我相信这是因为 XPath 表达式 ([@id='x']) 的属性值部分被忽略了。因此,两个 XPath 表达式被视为相同,似乎这导致表达式首先映射到 ItemRef1,然后映射到 ItemRef2,ItemRef2 覆盖 ItemRef1 映射,因此 ItemRef2 获胜。
我希望这是由我的语法问题引起的。任何意见,将不胜感激。
谢谢,凯文