【问题标题】:JAX-B set top down unmarhallingJAXB 设置自顶向下解组
【发布时间】:2018-01-05 10:02:04
【问题描述】:

我正在尝试在解组 XML 源期间优化我的代码。 我有这个 xml:

<Parent name="X">
    <List>
        <Element name="A">
        <Element name="B">
        <Element name="C">
    </List>
</Parent>
<Parent name="Y">
    <List>
        <Element name="A">
        <Element name="B">
        <Element name="C">
    </List>
</Parent>

我想在元素中使用 Parent 的名称值,因为如果 parent 的名称是 X,则元素名称将为 X+element.getName(),否则将为 Y+element.getName()。 我要做的是在解组过程中,在 Element bean 的 setName(String name) 方法中设置正确的值。这是因为我不想在解组后循环遍历父母和元素。 问题是 JAX-B 解组方法是自下而上的:它在创建对象 Parent 之前创建对象 Element 所以我不知道如何获取父属性名称。 有没有办法改变这种行为?

【问题讨论】:

标签: java xml jaxb unmarshalling


【解决方案1】:

您可以在解组后调用 create a method void afterUnmarshal(Unmarshaller, Object parent)。在此方法中,您可以根据需要更改对象的 name 属性。

您可能还想用@XmlElementWrapper(name="List") 注释您的elements 属性,以使Element 对象成为Parent 对象的直接子对象。

ps。这个答案几乎是 1:1 与以下问题的答案:

JAXB / XJC parent-child-parent navigation

【讨论】:

  • 谢谢,这似乎是我需要的。我对 XmlElementWrapper 有疑问:我不确定我需要在哪里放置注释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
相关资源
最近更新 更多