我们已经创建了几个 XML 模式,其中一个字段引用一个抽象类型,但在运行时消息将包含从该抽象类型派生的类型。默认情况下,Java 代码会正确处理该问题,但我很困惑,XML 解码是否以及如何处理该问题。由 JAXB 创建的 Java<=>XML 代码是否能够开箱即用地处理该问题,还是我们必须进行一些操作?
最佳答案
这是一个有点抽象的问题,所以这里有一个有点抽象的答案。
JAXB 很可能能够处理:
- 可以通过
xsi:type
指定具体类型.请看this post布莱斯·多安 (Blais Doughan) 着。此方法允许在运行时使用特定类型。你会得到相同的元素,但xsi:type
将指定使用的特定类型。例如你可以得到<geometry xsi:type="polygonType" .../>
- 有时继承是使用替换组建模的,请参阅
@XmlElementDecl
substitutionHeadName
/substitutionHeadNamespace
.在这种情况下,您可以用特定元素替换抽象元素。例如摘要_Geometry
具有特定Polygon
的元素元素。
JAXB 通过不同的构造支持这两种方法。
关于java - 作为 XML 消息一部分的派生类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26670537/