【问题标题】:Writing to xml using datasets without overwriting existing data使用数据集写入 xml 而不覆盖现有数据
【发布时间】:2012-04-24 17:54:41
【问题描述】:

我使用 DataSet 来表示我在项目中的设置。或多或少的代码如下:

if (!ValidateSettings(SettingsPath)) //returns false if the settingsfile doesn't consist with the DataSet
{
  dsSettings defaultSettings = new dsSettings();
  defaultSettings.ReadXml("settingsTemplate.xml", IgnoreSchema);
  dsSettings.WriteXml(SettingsFilePath);
}

如果我运行此代码,它将复制模板文件中的所有值并将其写入 SettingsFilePath 文件(覆盖该文件中的内容)。

但是,将来,假设我向 DataSet 添加了一个设置。然后我希望保留旧设置(可能由用户编辑),并且只在模板文件的 xml 文件中添加缺少的设置。

这可以通过 WriteXml 函数的某些选项或某些东西或任何如此简单的东西来完成。还是我必须读取现有的设置文件并保存每个值,写入 xml 并用这些保存的值覆盖?

【问题讨论】:

    标签: c# xml dataset


    【解决方案1】:

    每次调用 WriteXML 时,都会在一个有效 XML 数据块中创建 XML。从某种意义上说,它将包含一个根元素。所以另一个调用意味着另一个 XML 块,如果我们将两者放在一起,我们会得到一个无效的 XML 文档,因为不会有根节点。这就是为什么你不能这么简单地实现你想要的。

    话虽如此,您可以尝试一种解决方法:

    1. 在指定文件夹中保存任意数量的文件。然后将它们全部读入数据表,并将它们合并到一个数据表中。

    2. 创建您自己的单个 XML 文件。为此,请使用 WriteXML 方法将 XML 写入 StringWriter。通过创建您自己的根级节点将这些 XML 块合并为一个 XML 块,然后将它们写入磁盘。同样,当 readig 首先读取文件时,从根节点中提取 XML 块,然后使用 ReadXML 从流中读取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多