我們在一個屬性上有一個帶有JAXB註釋的類。然後我們有幾個子類來註釋其餘的重要數據。然而,我們有一個子類,我們想忽略父類的註釋,所以它不會被編組。這是一些示例代碼。如何忽略父類中的JAXB批註屬性?
父類:
@XmlType(name="Request")
@XmlAccessorType(XmlAccessorType.NONE)
public abstract class Request {
@XmlElement(required=true)
private UUID uuid;
... setter/getter
}
現在的子類:
@Xsd(name="concreteRequest")
@XmlRootElement("ConcreteRequest")
@XmlType(name="ConcreteRequest")
@XmlAccessorType(XmlAccessorType.FIELD)
public class ConcreteClass {
@XmlElement(required=true)
private String data1;
@XmlElement(required=true)
private String data1;
... setters/getters ...
}
當我masrhall具體類的實例,我得到以下XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConcreteRequest>
<uuid>uuid</uuid>
<data1>data</data1>
<data2>data</data3>
</ConcreteRequest>
,我想XML像這樣:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConcreteRequest>
<data1>data</data1>
<data2>data</data3>
</ConcreteRequest>
我們有其他的實現請求,但是這需要UUID,這只是一個特例。有沒有辦法忽略我的ConcreteRequest中的UUID字段?
不幸的是,我不認爲這是可能的在我的情況。 UUID字段被保存在我們的數據庫中,因此重寫它會很危險。 基本上我的類是一個特殊的子類,它有一個UUID,但它不屬於XML模式。 – prozaak
從我的分析中,JAXB沒有爲您的需求提供合適的選項,我建議使用JAXB行爲 - 「當@XmlElement(nillable = false)時,空值元素將被忽略」。因此,在編組時將值「uuid」顯示爲空,以便在編組期間不會構建屬性。 我有一段代碼示例,但無法在這裏分享。 – omega
這只是不起作用。 – GoalBased