[英]Custom Inheritance Representation in JAXB
我有以下使用JAXB讀取的XML結構:
<root>
<record>
<animal>Dog</animal>
<trait>Swim</trait>
<subrecord>
<name>Charlie</name>
<likes>Beef</likes>
</subrecord>
<subrecord>
<name>Rocky</name>
<likes>Pork</likes>
</subrecord>
</record>
<record>
<animal>Cat</animal>
<likes>Fish</likes>
<subrecord>
<name>Bella</name>
<trait>Bite</trait>
</subrecord>
<subrecord>
<name>Molly</name>
<trait>Claw</trait>
</subrecord>
</record>
</root>
標簽<trait>
和<likes>
可以位於<record>
或<subrecord>
。 如果在<record>
和<subrecord>
中都定義了,那么<subrecord>
值應該在<record>
值處成為陰影。
子記錄應該擴展記錄,並允許我調用下面的方法。 即對於“查理”,我應該得到:
subrecord.getAnimal() -> Dog
subrecord.getName() -> Charlie
subrecord.getTrait() -> Swim
subrecord.getLikes() -> Beef
請幫助我編寫用於JAXB映射的類。
因此,您想在子記錄對象中調用方法以獲取記錄值。 這不是一個好主意。
使用JAXB的最簡單方法是先定義XSD(如果您不想手工定義XSD,請使用從XML生成XSD的工具。)並使用xjc從XSD生成類。 任何偏離此標准實踐的操作都必須手動完成,並且您不想將機器生成的代碼與編寫的代碼混在一起。
您應該創建一個幫助程序方法或包裝器類,該類可以弄清楚子記錄的值,但是我個人認為應該首先正確定義XML Schema。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.