public static MWRFileBase Deserialize(string input)
 {
     XmlDocument xmlDoc = new XmlDocument();
     xmlDoc.LoadXml("<root>" + input + "</root>");
     XmlNode rootNode = xmlDoc.FirstChild.ChildNodes[0];
     MWRFileBase Root;
     if (rootNode.Name == "File")
     {
         Root = new MWRFileInfo(rootNode.Attributes["Name"].Value, int.Parse(rootNode.Attributes["Size"].Value));
     }
     else
     {
         Root = new MWRFileDirectory(rootNode.Attributes["Name"].Value);
         FillChilds(rootNode.ChildNodes, Root as MWRFileDirectory);
     }
     return Root;
 }
 private void GetObject(DirectoryInfo di, MWRFileDirectory root)
 {
     DirectoryInfo [] dSubs = di.GetDirectories();
     foreach (DirectoryInfo dsubInfo in dSubs)
     {
         MWRFileDirectory fDir = new MWRFileDirectory(dsubInfo.Name);
         GetObject(dsubInfo, fDir);
         root.SubFiles.Add(fDir);
     }
     FileInfo [] fInfos = di.GetFiles();
     foreach (FileInfo f in fInfos)
     {
         MWRFileInfo fFile = new MWRFileInfo(f.Name, f.Length);
         root.SubFiles.Add(fFile);
     }
 }