我在使用jaxb时遇到问题,在解组xml时,我无法设法在我的类之一和继承的类之间做出区别。

我上了一堂课:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlClassExtractor(PersonExtractor.class)
@XmlSeeAlso(Toto.class)
public class Person {
}


一个继承的:

public class Toto
extends Person
{
    @XmlElement(name = "additionalInformation")
    private String additionalInformation;
}


我的提取器:

public class PersonExtractor
extends ClassExtractor
{
@Override
public Class extractClassFromRow(Record pArg0, Session pArg1)
{
    if (pArg0.get("additionalInformation") != null || pArg0.get("@additionalInformation") != null)
    {
        return Toto.class;
    }
    else
    {
        return Person.class;
    }
}


}

不幸的是,这行不通。
当我尝试解组时,始终返回Person.class。
如果我更改:
@XmlElement(name =“ additionalInformation”)
进入
@XmlAttribute(name =“ additionalInformation”)
一切正常(不幸的是我确实想要一个元素)。

这些类都不是我的根本要素(一切都“深入”到我的模型中)
有人知道我在想什么吗?可能真的很蠢,但是却无法把手放在上面。

谢谢

最佳答案

可能您已经为根元素定义了名称空间(或默认名称空间),因此元素名称不是AdditionalInformation,而是namespace:additionalInformation(或在Record元素中表示)。您是否还检查了Toto类的内容是否已使用AdditionalInformation元素正确保存(我猜是因为它与attribute一起使用,但以防万一)。

您可以打印出Record元素的内容,以查看其中存储的内容和方式。

08-18 19:43