我真的需要你的帮助。
实际上,我从路径中读取了一些文件并将其序列化。直到现在,没什么特别的。 现在:我有主文件和子文件(包含新内容),如我的例子所示:
disktest.xml // Main file
disktest.1.xml //Sub file
disktest.2.xml //Sub file
myFile类看起来像这样:
public class myFile
{
// Some XmlArguments like name, blablabla (xml elements)
[XmlAttribute]
public string Name {get; set;}
[XmlAttribute]
public string Version {get; set;}
[XmlAttribute]
public string Description{get; set;}
...
// And a list of my subfiles
[XmlIgnore]
public List<myFile> SubFiles {get; set;}
}
public myFile()
{
name = "";
...
SubFiles = new List<myFile>();
}
像这样我从路径中获取所有文件,并使用LoadFile()
对它们进行血清化// Read all Files and deserialize them
List<string> allfiles = Directory.GetFiles("path", "pattern").ToList();
List<myFile> files= allfiles.Select(f => myFile.LoadFile(f)).ToList();
public static myFile LoadFile(string fileName)
{
myFile ret = new myFile();
try
{
using (StreamReader sr = new StreamReader(fileName))
{
XmlSerializer ser = new XmlSerializer(typeof(myFile ));
ret = (myFile )ser.Deserialize(sr);
}
}
catch (Exception ex)
{
ret.IsError=true;
ret.Error=ex.Message;
}
return ret;
}
这个想法是,当我读取一个子文件时,它必须在其主文件中被序列化,并且这是通过递归来实现的。问题是我没有找到“基础案例”来停止再生和我我变得疯狂......
任何帮助对我来说都很棒...... 在此先感谢!!
答案 0 :(得分:0)
嗯,您明确表示不要使用[XmlIgnore]
标记序列化您的子文件。删除该标记,您应该看到您的子文件(您可能需要调整您的数据类型 - 我不记得List<>
是否可序列化...