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
///