diff --git a/SabreHelper/RomManipulation.cs b/SabreHelper/RomManipulation.cs index a8673005..693b7f27 100644 --- a/SabreHelper/RomManipulation.cs +++ b/SabreHelper/RomManipulation.cs @@ -80,6 +80,36 @@ namespace SabreTools.Helper return doc; } + /// + /// Get the XmlTextReader associated with a file, if possible + /// + /// Name of the file to be parsed + /// Logger object for console and file output + /// The XmlTextReader representing the (possibly converted) file, null otherwise + public static XmlTextReader GetXmlTextReader(string filename, Logger logger) + { + logger.Log("Attempting to read file: " + filename); + + // Check if file exists + if (!File.Exists(filename)) + { + logger.Warning("File '" + filename + "' could not read from!"); + return null; + } + + if (IsXmlDat(filename)) + { + logger.Log("XML DAT detected"); + return new XmlTextReader(filename); + } + else + { + logger.Log("Non-XML DAT detected"); + StringReader sr = new StringReader(Converters.ClrMameProToXML(File.ReadAllLines(filename)).ToString()); + return new XmlTextReader(sr); + } + } + /// /// Get the name of the DAT for external use ///