JAX-B自上而下

时间:2018-01-05 10:02:05

标签: java xml jaxb unmarshalling

我正在尝试在XML源的unmarhal期间优化我的代码。 我有这个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 unmarshal方法是自下而上的:它在创建对象Parent之前创建了对象Element,因此我不知道如何获取父属性名称。 有没有办法改变这种行为?

1 个答案:

答案 0 :(得分:1)

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

您可能还希望使用elements@XmlElementWrapper(name="List")媒体资源进行注释,以使Element个对象成为Parent对象的直接子对象。

PS。这个答案几乎是1:1,答案如下:

  

JAXB / XJC parent-child-parent navigation