簡體   English   中英

XmlElement上的Jaxb / MOXY ClassExtractor

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM