如何为每个操作附加到Xml文件?

时间:2015-07-16 08:02:51

标签: c# xml

我正在开发一个工具来读取XMl(输入),其中包含一些文件夹和文件的路径,并根据路径中提到的所有文件的信息生成XML(输出)。我尝试了一个代码,它读取输入的xml文件,其中我已经给出了某个标签内某个文件夹的路径。如果我在输入xml中只提到了一个路径,那么该工具可以正常工作。但是在添加另一个路径之前,先前写入生成的XML(输出)的内容将被覆盖。我已经为按钮事件提供了下面的代码,该事件在click上生成输出XML,并将详细信息写入XML。我不知道如何追加或在我向xml写入详细信息的方法中追加。请帮帮我。

public bool GenerateReportFile(InputFile inputFile, string xmlfile)\\button clicked to perform operation
{
    //try
    //{
    // 
    foreach (var folder in inputFile.FolderList)
    {
        List<string> foldersList = GetSubFolders(folder);
        foldersList.Add(folder);

        UpdateFileInfomation(foldersList);

        SetVariable(folder);

        Serialize(xmlfile, typeof(DeploymentInfo), filesInformation);
    }

private static void Serialize(string xmlFilePath, Type type, object obj)\\method that writes contents to xml
{
    if (obj == null)
        return;

    if (!Directory.Exists(Path.GetDirectoryName(xmlFilePath)))
        Directory.CreateDirectory(Path.GetDirectoryName(xmlFilePath));

    try
    {
        XmlSerializer serializer = new XmlSerializer(type);
        TextWriter textWriter = new StreamWriter(xmlFilePath);\\this line creates a new XML file every time. this is where i need to handle things to avoid overwriting for every path mentioned in my input xml but i am unable to
        serializer.Serialize(textWriter, obj);
        textWriter.Close();
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

1 个答案:

答案 0 :(得分:0)

如果您打算在一个位置序列化相同类型的对象,则可以将它们添加到列表中并进行序列化。 这是一个教程: http://www.dotnetperls.com/serialize-list

编辑: 这仅适用于二进制序列化,而不适用于XML

您需要稍微修改一下您的功能: 您的GenerateReportFile应该生成对象列表并将其传递给您的Serialize