java - 支持使用 JAXB 进行 XSD 版本控制

标签 java xml xsd jaxb

我目前正在开发一个应用程序,该应用程序执行导入或导出某些实体的任务。用于相同目的的文件格式是XMLJAXB 用于 XML 绑定(bind)。

问题在于定义实体结构的XSD没有提供版本控制。如果将 JAXB 作为底层绑定(bind)框架,我如何开始定义版本化 XSD 以及随后的 XML 实例文档?

我读到,在 XSD 中引入版本有三种可能的方法。
1)更改内部schema版本属性
2) 在根元素上创建一个类似 schemaVersion 的属性
3) 更改模式的目标命名空间。
哪一个最适合下面提到的用例?

用例:下一版本中对 XSD 所做的更改可能会使现有元素失效。虽然架构本身可能不向后兼容,但应用程序需要提供处理所有版本架构的支持。

最佳答案

XML 旨在促进文档结构的更改和灵 active 。不幸的是,JAXB 不是。将文档结构知识编译到 Java 源代码中的这一行为使得更改文档结构变得更加困难。

如果结构变化是您议程的一部分,我认为您应该认真考虑不使用 JAXB:XQuery 和 XSLT 等技术更适合这种情况。

关于java - 支持使用 JAXB 进行 XSD 版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931992/

相关文章:

java - 从Luaj继承Java类

xml - Python3解析xml

xml - 如何仅使用 Parser 实例将 XML 写入文件?

另一个文件中可能值的 XML 模式枚举

java - 使用 JAXB 解码时 XML 格式错误

xml - 以唯一 id 作为属性的 XSD 架构

java - 如何使用 bean 的属性格式化字符串

java - 为什么此正则表达式在单个用例上失败 - 包含&符号的文本字符串?

javascript - 使用 xpath 计算具有特定属性值的节点?

java - 在java中使用wordnet查找给定形容词的同义词和反义词集