【发布时间】:2014-01-05 06:25:02
【问题描述】:
我希望能够向我的用户公开表示 XML 文件的对象。这可以通过许多库(xmlBeans、JAXB...)来完成,并且一切都很好,直到我必须支持该 XML 文件的不同版本(不断发展的模式问题)以实现向后兼容性。
我希望这对我的用户完全透明,这意味着我的系统需要决定在某个时间点需要使用哪个版本的 XML 文件。
这是我想要实现的简短伪代码:
public VersionIndependantObject getVersionSpecificXmlBindedObject() {
//Determening XSD version and binding XML file to JAVA object
return javaObject;
}
VersionIndependantObject - 这是当时在系统上找到的 XML 文件的对象表示(可能是 v1、v2...)。
有没有办法使用一个已经存在的 XML 库 -> Java 对象绑定?
【问题讨论】:
-
几个问题:您的 XML Schema 版本有何不同?最新版本可以支持所有以前的版本吗?您是否在 XML 文档的根元素中包含版本属性?你保持命名空间不变吗?
-
@BlaiseDoughan 我真的不知道这些模式会有多么不同,因为定义它们的不是我,而是一个外部系统。但是,我可以通过该系统的版本来区分它们
-
在我看来,您有两个问题,正在寻求一种解决方案。您必须分解问题并分别解决每个问题。一个问题已经解决了。您可以通过委托验证过程来解决另一个问题。某种“验证器”将确定版本,然后加载适当的处理器类来处理它。我建议研究行为设计模式以寻找可能的解决方案。确实想到了模板和调解器。诸如适配器模式之类的结构设计模式也可能有效。
标签: java xml data-binding jaxb xsd