public static Project openProject(string file) { if (file == null) throw new ArgumentException("Provided parameter 'file' is null"); if (!File.Exists(file)) throw new ArgumentException("Provided parameter 'file' is refering a not existing file"); if (!file.EndsWith(".oosproj")) throw new ArgumentException("Provided parameter 'file' is refering a to a non .oosproj file"); XmlDocument reader = new XmlDocument(); reader.Load(file); XmlNode projectNode = reader.SelectSingleNode("/root/project"); XmlNode compilerNode = reader.SelectSingleNode("/root/compiler"); Project proj = new Project(); proj._projectPath = file.Remove((file.Contains("\\") ? file.LastIndexOf('\\') : file.LastIndexOf('/')) + 1); foreach (XmlNode node in projectNode.ChildNodes) { if (node.Name.Equals("title", StringComparison.OrdinalIgnoreCase)) proj.ProjectTitle = node.InnerText; else if (node.Name.Equals("author", StringComparison.OrdinalIgnoreCase)) proj.Author = node.InnerText; else if (node.Name.Equals("mainfile", StringComparison.OrdinalIgnoreCase)) proj.Mainfile = node.InnerText; else if (node.Name.Equals("outputfolder", StringComparison.OrdinalIgnoreCase)) proj.OutputFolder = node.InnerText; else if (node.Name.Equals("buildfolder", StringComparison.OrdinalIgnoreCase)) proj.Buildfolder = node.InnerText; } foreach (XmlAttribute att in compilerNode.Attributes) { if (att.Name.Equals("version", StringComparison.OrdinalIgnoreCase)) proj.CompilerVersion = new Version(att.Value); } return proj; }