Java和XML:黑客避免后向兼容性

时间:2014-03-06 13:59:57

标签: java xml dom w3c

是否有一个XML关键字默认解释为“XML结束”或类似(可能崩溃)但是谁也可以被识别和忽略,这在w3c.dom标准中?

为什么?

我在现有程序中添加了一些功能。这些功能确实将信息添加到表示项目的XML源文件中。

旧版本的程序会忽略其他数据。问题是如果他们用旧版本打开一个项目并保存它,其他信息就会消失。

我想要做的是确保旧版本的程序无法打开新的源文件。

谢谢!

3 个答案:

答案 0 :(得分:1)

如果不修改项目的旧版本,我想不出任何方法可以做到这一点。我想我会做以下几件事之一:

  1. 重构程序,使其不会吹走它不理解的部分。
  2. 使用.xsd验证XML,如果与预期的不匹配则立即停止运行。
  3. 将一个版本属性添加到XML文件的根标记中,以便在运行之前进行检查。

答案 1 :(得分:1)

不,事实上你可以添加任何简单的魔法。

解决此问题的常用方法是从一开始就设计文档以携带版本号,并设计应用程序以检查版本号并了解它们可能无法保留比设计版本更新的版本对

另一种方法是从一开始就设计为针对DTD或模式进行验证,以便引入的任何新元素都会使文档对于旧版本的程序无效。

我可以想到一些丑陋的方法来解决这个问题,但它们会让文件不再是格式良好的XML文档。 (例如,使用多个根元素将其设为文档片段。或者,如果旧代码是使用仅支持XML 1.0的解析器编译的,则需要将新文档编写为XML 1.1。)当然,这些也会使旧代码无法读取文档。

基本上,所有好的答案都需要发布旧代码的错误修正,而要学习的课程是“增长计划”。我希望我能告诉你。

答案 2 :(得分:1)

  

我想要做的是确保旧版本的程序无法打开新的源文件。

这是通常要求的另一种方式,即确保旧程序可以读取新文件。

我原本以为找到一些更改数据的方法相对容易,以便旧代码崩溃或失败,例如通过更改命名空间。