我使用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>
中的值。
子记录应该扩展记录并允许我调用下面的方法。即因为查理&#34;我应该得到:
subrecord.getAnimal() -> Dog
subrecord.getName() -> Charlie
subrecord.getTrait() -> Swim
subrecord.getLikes() -> Beef
请帮我编写JAXB映射的代码类。
答案 0 :(得分:0)
因此,您希望调用子记录对象中的方法来获取记录值。这不是一个好主意。
使用JAXB的最简单方法是首先定义XSD(如果您不想手动定义XSD,请使用从XML生成XSD的工具。)并使用xjc从XSD生成类。任何偏离此标准做法的事情都必须手动完成,并且您不希望将机器生成的代码与您编写的代码混合在一起。
你应该创建一个辅助方法或包装类,它可以找出子记录的值,但我个人认为首先应该正确定义XML Schema。