如果有办法,如何做到这一点,我想知道最优雅的一种。这是问题: - 假设您有一个抽象类 Z - 您有两个从 Z 继承的类:名为 A 和 B。
您可以像这样编组任何实例(A 或 B):
JAXBContext context = JAXBContext.newInstance(Z.class);
Marshaller m = context.createMarshaller();
m.marshal(jaxbObject, ...an outputstream...);
在生成的 XML 中,您可以看到它是什么类型的实例(A 或 B)。
现在,你如何解组喜欢
JAXBContext jc = JAXBContext.newInstance(Z.class);
Unmarshaller u = jc.createUnmarshaller();
u.unmarshal(...an inputstream...)
我得到一个 UnmarshalException 说
"Exception Description: A descriptor with default root element {<my namespace>}<the root tag, e.g. A or B> was not found in the project]
javax.xml.bind.UnmarshalException"
那么如何进行解组以获得 Z 的实例,然后可以在解组后进行测试,它是什么?例如 z instanceof A then... z instanceof B then something else... 等等。
感谢您提供任何想法或解决方案。
我正在使用 JRE1.6 和 MOXy 作为 JAXB Impl。