我正在开发一个工具来读取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;
}
}
答案 0 :(得分:0)
如果您打算在一个位置序列化相同类型的对象,则可以将它们添加到列表中并进行序列化。 这是一个教程: http://www.dotnetperls.com/serialize-list
编辑: 这仅适用于二进制序列化,而不适用于XML
您需要稍微修改一下您的功能: 您的GenerateReportFile应该生成对象列表并将其传递给您的Serialize