在C#中序列化XML

时间:2017-10-17 16:04:20

标签: c# .net xml serialization

我基本上尝试将播客添加到XML文件中,并最终使用应用程序不同部分中的数据从同一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文件,并且有新鲜的对象。我究竟做错了什么?干杯

2 个答案:

答案 0 :(得分:0)

PodcastList podList = new PodcastList();是在班级。

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

答案 1 :(得分:0)

XML文件通常不会附加到'由于需要打开和关闭标签。相反,其他类型的文本文件,如日志文件,其中追加更有意义。

当您致电serializer.Serialize时,整个文件都会被覆盖。

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