Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为每个操作附加到Xml文件?_C#_Xml - Fatal编程技术网

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

C# 如何为每个操作附加到Xml文件?,c#,xml,C#,Xml,我正在开发一个工具来读取包含一些文件夹和文件路径的XMl(输入),并根据路径中提到的所有文件的信息生成XMl(输出)。我尝试了读取输入xml文件的代码,在该文件中,我给出了特定标记中某个文件夹的路径。如果我在输入xml中只提到了一条路径,那么该工具就可以完美地工作。但是在添加另一个路径时,先前写入XML(输出)的内容会被覆盖。我已经给出了按钮事件的代码,该按钮事件在单击时生成输出XML,以及将详细信息写入XML的方法。我不确定如何在我将详细信息写入xml的方法中追加或追加到哪里。请帮帮我 pub

我正在开发一个工具来读取包含一些文件夹和文件路径的XMl(输入),并根据路径中提到的所有文件的信息生成XMl(输出)。我尝试了读取输入xml文件的代码,在该文件中,我给出了特定标记中某个文件夹的路径。如果我在输入xml中只提到了一条路径,那么该工具就可以完美地工作。但是在添加另一个路径时,先前写入XML(输出)的内容会被覆盖。我已经给出了按钮事件的代码,该按钮事件在单击时生成输出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;
    }
}
public bool GenerateReportFile(InputFile InputFile,string xmlfile)\\点击按钮执行操作
{
//试一试
//{
// 
foreach(inputFile.FolderList中的var文件夹)
{
List foldersList=GetSubFolders(文件夹);
foldersList.Add(文件夹);
更新信息(文件夹列表);
设置变量(文件夹);
序列化(xmlfile、typeof(DeploymentInfo)、filesInformation);
}
私有静态void Serialize(字符串xmlFilePath,类型,对象obj)\\将内容写入xml的方法
{
if(obj==null)
返回;
如果(!Directory.Exists(Path.GetDirectoryName(xmlFilePath)))
CreateDirectory(Path.GetDirectoryName(xmlFilePath));
尝试
{
XmlSerializer serializer=新的XmlSerializer(类型);
TextWriter TextWriter=new StreamWriter(xmlFilePath);\\此行每次都会创建一个新的XML文件。这是我需要处理的地方,以避免覆盖输入XML中提到的每个路径,但我无法
serializer.Serialize(textWriter,obj);
textWriter.Close();
}
捕获(例外情况除外)
{
掷骰子;
}
}

如果您想在单个位置序列化相同类型的对象,可以将它们添加到列表中,然后将其序列化。 以下是一个教程:

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

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

如果您打算在单个位置序列化相同类型的对象,则可以将它们添加到列表中并进行序列化。 以下是一个教程:

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

您需要稍微修改一下您的函数:
GenerateReportFile应该生成对象列表并将其传递给序列化对象

如何设置
xmlfile
?您是指输入文件还是输出文件?当然,两者都有,信息越多越好如何设置
xmlfile
?您是指输入文件还是输出文件?当然,两者都有,信息越多越好他回答如果这是你问题的适当解决方案,请:)如果这是你问题的适当解决方案,请接受答案:)