[英]Jaxb/MOXY ClassExtractor on XmlElement
我在使用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元素的內容,以查看其中存儲的內容和方式。
感謝您的回答,我找到了一個解決方案:
顯然,當前MOXy要求繼承指示器位於XML屬性中,以使@XmlClassExtractor起作用。 我最終找到並使用另一種方式來使用@XmlAdapter處理繼承
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.