/// <summary> /// /// </summary> /// <param name="templateFile"></param> /// <param name="file"></param> /// <param name="diskId">realative path to files ItemFiles folder</param> public static void readTemplate(string templateFile, MyInfoFile file, UInt64 diskId) { XmlTextReader reader = new XmlTextReader(Managers.FileManager.PathToHFOFolder + "\\FITemplates\\" + templateFile); try { InfoGroup actualGroup = null; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case "group": if (actualGroup != null) { actualGroup = actualGroup.AddGroup(reader.GetAttribute("name")); } else { actualGroup = file.AddGroup(reader.GetAttribute("name")); } break; case "value": Item it = Parsing.ParseItem(reader.GetAttribute("type"), reader.GetAttribute("name"), reader, diskId); it.SetValue(reader.GetAttribute("default")); if (actualGroup != null) { actualGroup.AddItem(it); } else { file.AddItem(it); } break; } break; case XmlNodeType.EndElement: if (reader.Name == "group") { actualGroup = actualGroup.Up; } break; } } } finally { reader.Dispose(); } }
/// <summary> /// Read information about file to instance of MyFileInfo /// </summary> /// <param name="filePath">file with information about file (full path)</param> /// <param name="diskId">id of this where is this file</param> /// <returns>MyFileInfo with readet information, or null if file does not exists</returns> public static async Task <MyInfoFile> readFileInfo(string filePath, ulong diskId) { System.IO.FileInfo ff = new System.IO.FileInfo(filePath); Item inItem = null; if (ff.Exists) { MyInfoFile file = new MyInfoFile(); var hideenStream = new System.IO.StreamReader(filePath); XmlReader reader = XmlTextReader.Create(hideenStream, new XmlReaderSettings() { Async = true }); try { InfoGroup actualGroup = null; while (await reader.ReadAsync()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case "group": if (actualGroup != null) { actualGroup = actualGroup.AddGroup(reader.GetAttribute("name")); } else { actualGroup = file.AddGroup(reader.GetAttribute("name")); } break; case "value": inItem = Parsing.ParseItem(reader.GetAttribute("type"), reader.GetAttribute("name"), reader, diskId); if (actualGroup != null) { actualGroup.AddItem(inItem); } else { file.AddItem(inItem); } break; } break; case XmlNodeType.EndElement: switch (reader.Name) { case "group": actualGroup = actualGroup.Up; break; case "value": inItem = null; break; } break; case XmlNodeType.Text: if (inItem != null) { inItem.SetValue(reader.Value); } break; case XmlNodeType.CDATA: if (inItem != null) { inItem.SetValue(reader.Value); } break; } } } finally { reader.Dispose(); hideenStream.Dispose(); } return(file); } else { return(null); } }