我们创建了一些XML-Schema,其中一个字段引用一个抽象类型,但在运行时,该字体将包含一个从该抽象类型派生的类型。 Java代码默认处理正确,但我很困惑,XML-unmarshalling是否以及如何处理它。 JAXB创建的Java< => XML代码是否能够处理开箱即用或我们是否需要进行一些手持操作?
答案 0 :(得分:2)
这是一个有点抽象的问题,所以这里有一个抽象的答案。
JAXB很可能能够解决这个问题:
xsi:type
指定特定类型。请参阅Blais Doughan的this post。此方法允许在运行时中使用特定类型。您将获得相同的元素,但xsi:type
将指定使用的特定类型。例如,您可以获得<geometry xsi:type="polygonType" .../>
@XmlElementDecl
substitutionHeadName
/ substitutionHeadNamespace
。在这种情况下,您可以用特定元素替换抽象元素。例如,具有特定_Geometry
元素的抽象Polygon
元素。JAXB支持这两种方法,但是通过不同的结构。