C# 如何为每个操作附加到Xml文件?
我正在开发一个工具来读取包含一些文件夹和文件路径的XMl(输入),并根据路径中提到的所有文件的信息生成XMl(输出)。我尝试了读取输入xml文件的代码,在该文件中,我给出了特定标记中某个文件夹的路径。如果我在输入xml中只提到了一条路径,那么该工具就可以完美地工作。但是在添加另一个路径时,先前写入XML(输出)的内容会被覆盖。我已经给出了按钮事件的代码,该按钮事件在单击时生成输出XML,以及将详细信息写入XML的方法。我不确定如何在我将详细信息写入xml的方法中追加或追加到哪里。请帮帮我C# 如何为每个操作附加到Xml文件?,c#,xml,C#,Xml,我正在开发一个工具来读取包含一些文件夹和文件路径的XMl(输入),并根据路径中提到的所有文件的信息生成XMl(输出)。我尝试了读取输入xml文件的代码,在该文件中,我给出了特定标记中某个文件夹的路径。如果我在输入xml中只提到了一条路径,那么该工具就可以完美地工作。但是在添加另一个路径时,先前写入XML(输出)的内容会被覆盖。我已经给出了按钮事件的代码,该按钮事件在单击时生成输出XML,以及将详细信息写入XML的方法。我不确定如何在我将详细信息写入xml的方法中追加或追加到哪里。请帮帮我 pub
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
?您是指输入文件还是输出文件?当然,两者都有,信息越多越好他回答如果这是你问题的适当解决方案,请:)如果这是你问题的适当解决方案,请接受答案:)