Fix handling of native XML files

This commit is contained in:
Matt Nadareski
2016-03-19 12:54:15 -07:00
parent 936128a7f1
commit 7539fc3c69

View File

@@ -252,16 +252,11 @@ namespace DATabase
} }
} }
// Attempt to open the given file // Attempt to load the current file as XML
try
{
FileStream fs = File.OpenRead(_filepath);
StreamReader sr = new StreamReader(fs);
XmlDocument doc = new XmlDocument(); XmlDocument doc = new XmlDocument();
try try
{ {
doc.LoadXml(sr.ReadToEnd()); doc.LoadXml(File.ReadAllText(_filepath));
} }
catch (XmlException ex) catch (XmlException ex)
{ {
@@ -269,8 +264,20 @@ namespace DATabase
} }
// Experimental looping using only XML parsing // Experimental looping using only XML parsing
XmlNode node = doc.FirstChild.FirstChild; XmlNode node = doc.FirstChild;
if (node.Name == "header") if (node != null && node.Name == "xml")
{
node = node.NextSibling;
}
if (node != null && node.Name == "softwarelist")
{
node = node.NextSibling;
}
if (node != null && (node.Name == "datafile" || node.Name == "softwarelist"))
{
node = node.FirstChild;
}
if (node != null && node.Name == "header")
{ {
node = node.NextSibling; node = node.NextSibling;
} }
@@ -319,10 +326,10 @@ namespace DATabase
gameid, gameid,
data.Attributes["name"].Value, data.Attributes["name"].Value,
date, date,
(data.Attributes["size"].Value != "" ? Int32.Parse(data.Attributes["size"].Value) : -1), (data.Attributes["size"] != null ? Int32.Parse(data.Attributes["size"].Value) : -1),
(data.Attributes["crc"].Value != "" ? data.Attributes["crc"].Value : ""), (data.Attributes["crc"] != null ? data.Attributes["crc"].Value : ""),
(data.Attributes["md5"].Value != "" ? data.Attributes["md5"].Value : ""), (data.Attributes["md5"] != null ? data.Attributes["md5"].Value : ""),
(data.Attributes["sha1"].Value != "" ? data.Attributes["sha1"].Value : "") (data.Attributes["sha1"] != null ? data.Attributes["sha1"].Value : "")
); );
} }
} }
@@ -335,15 +342,6 @@ namespace DATabase
node = node.NextSibling; node = node.NextSibling;
} }
sr.Close();
fs.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex);
return false;
}
return true; return true;
} }