派生类型作为XML消息的一部分

时间:2014-10-31 08:46:08

标签: java xml jaxb xsd schema

我们创建了一些XML-Schema,其中一个字段引用一个抽象类型,但在运行时,该字体将包含一个从该抽象类型派生的类型。 Java代码默认处理正确,但我很困惑,XML-unmarshalling是否以及如何处理它。 JAXB创建的Java< => XML代码是否能够处理开箱即用或我们是否需要进行一些手持操作?

1 个答案:

答案 0 :(得分:2)

这是一个有点抽象的问题,所以这里有一个抽象的答案。

JAXB很可能能够解决这个问题:

  • 可以通过xsi:type指定特定类型。请参阅Blais Doughan的this post。此方法允许在运行时中使用特定类型。您将获得相同的元素,但xsi:type将指定使用的特定类型。例如,您可以获得<geometry xsi:type="polygonType" .../>
  • 有时使用替换组对继承进行建模,请参阅@XmlElementDecl substitutionHeadName / substitutionHeadNamespace。在这种情况下,您可以用特定元素替换抽象元素。例如,具有特定_Geometry元素的抽象Polygon元素。

JAXB支持这两种方法,但是通过不同的结构。