如何在更新前保存XML文件?

时间:2010-03-11 18:36:49

标签: c# wpf xml

对,所以我有一个简单的应用程序,它包含一个日历,一个Set Event按钮和一个在WPF中使用DataTemplate填充的列表框。当我构建应用程序时,Events.xml文件是这样的:

<?xml version="1.0" encoding="utf-8" ?>
    <events>

    </events>

我通过代码向xml添加事件。 xml文件的最终结构如下

<?xml version="1.0" encoding="utf-8" ?>
<events>
   <event Name="Some Name">
       <startDate>20.03.2010</startDate>
       <endDate>29.03.2010</endDate>
   </event>
</event>

现在这是我的问题。如果我更新应用程序并使用Click Once进行部署并且应用程序自行更新,则会丢失列表,因为新文件为空。任何解决方法吗?

以下是我添加数据的方法:

var xDocument = XDocument.Load(@"Data\Events.xml");
xDocument.Root.Add(new XElement("event", new XAttribute("name", event.Name),
                new XElement("startDate", startDate),
                new XElement("endDate", endDate)
                )
                );
xDocument.Save(@"Data\Events.xml");

2 个答案:

答案 0 :(得分:0)

如果是一个选项,我建议您不要将Events.xml作为项目的一部分。如果你这样做,你可以:

  1. 在加载之前检查它是否存在。
  2. 如果不存在,请写出一个空的。
  3. 如果Events.xml不是项目的一部分,则Click Once将不会在更新时覆盖它。

答案 1 :(得分:0)

我发现了自己的问题。

这是我的方法。当应用程序第一次运行时,创建一个文件夹@C:\Program Files\<MyApp>\Data\在那里添加Events.xml文件,我总是在那里有文件。

唯一的缺点是用户需要在卸载时手动删除文件夹。

默认情况下,点击一次不会安装应用@C:\Program Files\<MyApp>\。它安装到@C:\Users\<Username>\AppData\Local\Apps\2.0\(在Windows 7下)。

任何解决方法吗?