【发布时间】:2013-01-10 22:43:00
【问题描述】:
如何在 Java 中处理不断变化的 XML 模式?我有一个用例,我必须在 Java 应用程序中支持一组旧的和不断发展的 XML 模式(即支持 Foo v1、v2、v3、v4、v5)。
我的用例包括 - 读取针对不同版本的 Foo XML 模式编写的所有 Foo XML 内容 - 合并可以用不同版本的 OVAL XML 模式编写的 Foo XML 内容(即将 Foo v1 与 Foo v5 合并)。
Foo XML 架构相当复杂,并且存在已知的向后兼容性问题,因此 Foo v1 XML 内容可能无法使用 Foo v3 XML 架构进行 XML 架构验证。
我想到了两种方法 1) 使用 JAXB 等 Java XML 数据绑定,并为每个版本的 XML 模式生成一组绑定。以 Foo XML 模式为例,我将为 Foo XML 模式 v1 到 v5 生成 5 组绑定。挑战在于如何将 Foo XML 内容的版本与另一个版本的 XML 内容合并。
2) 创建一组 Java 数据模型并使用 SAX、DOM、JDOM 手动解析它,并尝试解决我可能遇到的所有向后兼容性问题。现在的挑战是我必须在没有 JAXB 帮助的情况下自己解析 XML。
我想就处理不断变化的 XML 模式的最佳方法获得一些建议。 Java XML 数据绑定是正确的前进路径,还是创建我自己的 Java 数据模型并手动解析?
【问题讨论】:
-
我不知道
XSLT是否可以在这里工作?如果没有,我可能会结合使用您的方法,使用几组绑定,然后使用您自己编写的一组额外的常用集合。每次要使用 xml 数据时都要检查公用集。 -
BTW Java 是一个单词而不是首字母缩略词