2011-07-20 31 views
1

我們有一個使用xml序列化來序列化和反序列化其配置設置的應用程序。將XML轉換爲新版本的反序列化

我們將發佈此應用程序的新版本,它的對象模型有一些重大變化。我們的用戶尚未準備好用新版本重新配置設置。我們需要一種將以前版本的xml轉換爲新版本兼容xml的解決方案。較新的版本有一些類刪除,重命名,添加屬性等。

什麼是最好的方式來轉換舊的xml,以便它可以被更新的版本反序列化?

回答

3

當你第一次加載xml時,你必須確定它是什麼版本。最簡單的方法是創建一個將舊配置轉換爲新格式的函數。然後,新的格式加載器可以隨時使用,並且可以擺脫舊的和舊的對象模型。

轉換可以使用xslt或c#代碼來完成。

1
  • 保留兩個對象圖,一個表示舊版本,一個表示新版本。 反序列化舊版本並使用它創建新的對象圖;所以當下次保存xml的時候;它將使用新的模式保存。在下一個版本中,您可以刪除此向後兼容性功能。

  • 您可以在xml中搜索舊格式的模式,並使用Anders Abel建議的XSLT或代碼將其轉換爲新的xml。但是這應該在加載時自動完成。在保存文件時,您應該警告用戶它將使用新格式保存,並且不會與早期版本兼容。