簡體   English   中英

JAXB中的自定義繼承表示

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

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