我在使用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元素的内容,以查看其中存储的内容和方式。