【发布时间】:2011-03-16 20:51:05
【问题描述】:
使用 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 获胜。
我希望这是由我的语法问题引起的。任何建议将不胜感激。
谢谢, 凯文
【问题讨论】:
-
您好,感谢您提出这个问题。实际上,我也在尝试做类似的事情,但由于某种原因,它没有按预期工作。我也尝试了这个答案中提到的东西。我尝试了这种方法和作者博客中的示例,但
JAXB Marshalling仍然无法按预期使用@XmlPath。似乎使用和不使用@XmlPath生成的 XML 是相同的。请您查看此示例并提供您的答案:stackoverflow.com/questions/67500565/…
标签: xpath jaxb eclipselink moxy