我正在尝试在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,因此我不知道如何获取父属性名称。 有没有办法改变这种行为?
答案 0 :(得分:1)
您可以在解组后调用create a method void afterUnmarshal(Unmarshaller, Object parent)
。在此方法中,您可以根据需要更改对象的name
属性。
您可能还希望使用elements
对@XmlElementWrapper(name="List")
媒体资源进行注释,以使Element
个对象成为Parent
对象的直接子对象。
PS。这个答案几乎是1:1,答案如下: