在C#中序列化XML#

问题描述:

我基本上试图将播客添加到XML文件,并最终使用该应用程序的不同部分中的数据从相同的XML中检索它们。在C#中序列化XML#

我成功将数据写入XML,但每次重新启动应用程序(调试)并按下“提交”按钮时,XML文件将重置为0个条目。

的提交代码:

PodcastList podList = new PodcastList(); 

    private void btnAddPod_Click(object sender, EventArgs e) 
    { 
     var podUrl = txtAddPod.Text; 
     var podName = txtEnterName.Text; 

     podList.AddPod(podUrl, podName, 0); 

     Xml.SaveListData(podList.GetPodcastList(), "Podcasts.xml"); 
    } 

保存到XML:

public static void SaveListData(object obj, string filename) 
    { 
     var serializer = new XmlSerializer(obj.GetType()); 

     using (var stream = new StreamWriter(filename)) 
     { 
      serializer.Serialize(stream, obj); 
     } 
    } 

我猜的应用程序创建一个新的XML文件每次我按时间提交并有新鲜的对象。我究竟做错了什么?干杯

+0

需要发布重现问题的相关代码和xml示例。 – derloopkat

+0

您是否尝试将文件保存在'/ bin/Debug'之外? – Michael

+3

您没有任何** ** ** **文件的代码。每次按添加,都会创建一个新文件。该文件覆盖现有文件(如果有的话)。 – Serge

PodcastList podList = new PodcastList();是在课堂上。

如果要维护状态,请重新加载XML文件在构造函数中或在加载时将文件反序列化到PodcastList,然后您将能够保留并重用该集合并将数据重写回XML文件。

由于需要打开和关闭标签,XML文件通常不会“附加到”。与之相反,其他类型的文本文件(如日志文件)在添加后会更有意义。

当您拨打serializer.Serialize时,整个文件被覆盖。

您的程序需要执行的操作是在启动时读取已存在的XML文件,并将其存储为PodcastList()。然后您的程序可以添加到它(在内存中)并将整个列表保存为一个文件。