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

标签 java xml jaxb xsd schema

我们已经创建了几个 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/

相关文章:

java - 可选择在 map 和 orElseGet 中使用通用通配符

c++ - QAbstractItemModel:为什么在将大量项目插入模型时发出 dataChanged 和插入行信号如此缓慢?

java - 将 XSLT 转换后的 XML 片段写入 XMLStreamWriter

java - 尝试构建 ProtoBuf Java 组件时出现包 com.google.protobuf 不存在错误

java - 从Java中的任意两个字符中生成一个随机字符

java - 在java中将base64转换为excel文件

SQL XML 命名空间

c# - 在 C# 中将类序列化为 'almost' xml 字符串

java - JAXB:XML 注册表中没有与 namespace 和名称匹配的 XML 元素声明

java - 这里使用哪个 XML 解析器?