【问题标题】:How to get values from enclosing elements in JAXB如何从 JAXB 中的封闭元素中获取值
【发布时间】:2011-09-09 14:39:32
【问题描述】:

我有以下 XML 结构:

<PriceBook>
    <PriceList product="0D000000.007C.06">
        <Price .../>
        <Price .../>
    </PriceList>
    ...
</PriceBook>

PriceList 包含 Price 对象的列表。我不希望 Price 对象具有对其 PriceLists 的反向引用。

问题:

我希望产品信息不仅设置在我的PriceList 对象中,而且设置在Price 对象中。当然,我不想在 XML 本身中有这种重复,只在 Java 端。最优雅的方法是什么?

【问题讨论】:

  • 您希望 price 对象具有包含 priceListproduct 属性,但不希望在编组时显示该属性?
  • 你能提供你想映射到这个 XML 文档的域对象吗?
  • product 属性应该只显示在 XML 中的 PriceList 级别,因为 PriceList 中的所有 Prices 都属于同一个 product。但是,对于 Java 端的处理,将这些信息也放在 Prices 上会很方便。

标签: java xml-serialization jaxb


【解决方案1】:

您可以利用PriceList 对象上的afterUnmarshal 事件。在这种情况下,您可以遍历 Price 对象列表并设置产品信息。您需要将Price 上的产品信息标记为@XmlTransient。

更多信息

【讨论】:

  • 愚蠢的我,我太专注于通过注释以某种方式解决这个问题。谢谢!
  • 请注意,实际的解决方案是倒退的:在PriceList 中调用afterUnmarshal 时尚未设置价格列表,但如果将afterUnmarshal 放入Price,则可以获取PriceList作为父参数。
猜你喜欢
  • 2011-10-13
  • 1970-01-01
  • 2021-12-03
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2017-01-13
相关资源
最近更新 更多