【问题标题】:EclipseLink MOXy @XmlPath support for getting element value by attribute valueEclipseLink MOXy @XmlPath 支持按属性值获取元素值
【发布时间】: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


【解决方案1】:

我领导 EclipseLink JAXB (MOXy),这个 feature 是即将发布的 EclipseLink 2.3 版本的一部分。您现在可以通过以下网址下载 EclipseLink 2.3.0 夜间下载(从 3 月 22 日开始)之一来试用它:

映射将与您在问题中描述的一样:

@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;
  ...
}

更多信息

【讨论】:

  • @Kevin James - 这个特性现在在 EclipseLink 2.3.0 流中可用。我已经用详细信息更新了我的答案。
  • 非常感谢,Blaise,正是我所需要的……而且时机恰到好处 :) 任何估计 2.3.0 何时准备好迎接黄金时段?
  • EclipseLink 2.3.0 将与今年夏天的 Eclipse Indigo 版本保持一致:eclipse.org/projects/timeline/…
  • 亲爱的@BlaiseDoughan 你能帮我解决这个stackoverflow.com/questions/27765087/…,它看起来像一个错误,但可能是一个错过的配置
猜你喜欢
  • 2012-01-14
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 2012-12-01
  • 2016-11-30
相关资源
最近更新 更多