diff --git a/SabreTools.Helper/Objects/Dat/DatFile.cs b/SabreTools.Helper/Objects/Dat/DatFile.cs
index 4521e69e..eef640e3 100644
--- a/SabreTools.Helper/Objects/Dat/DatFile.cs
+++ b/SabreTools.Helper/Objects/Dat/DatFile.cs
@@ -2855,7 +2855,7 @@ namespace SabreTools.Helper
}
///
- /// Parse an XML DAT (Logiqx, OfflineList, SabreDAT, and Software List) and return all found games and roms within
+ /// Parse a Logiqx XML DAT and return all found games and roms within
///
/// Name of the file to be parsed
/// System ID for the DAT
@@ -3025,7 +3025,7 @@ namespace SabreTools.Helper
// Now check for all of the header items
if (matched[1].Value.StartsWith("name"))
{
- Name = (String.IsNullOrEmpty(Name) ? matched[2].Value : Name);
+ Name = (String.IsNullOrEmpty(Name) ? HttpUtility.HtmlDecode(matched[2].Value) : Name);
superdat = superdat || Name.Contains(" - SuperDAT");
if (keep && superdat)
{
@@ -3034,27 +3034,27 @@ namespace SabreTools.Helper
}
else if (matched[1].Value.StartsWith("description"))
{
- Description = (String.IsNullOrEmpty(Description) ? matched[2].Value : Description);
+ Description = (String.IsNullOrEmpty(Description) ? HttpUtility.HtmlDecode(matched[2].Value) : Description);
}
else if (matched[1].Value.StartsWith("rootdir"))
{
- RootDir = (String.IsNullOrEmpty(RootDir) ? matched[2].Value : RootDir);
+ RootDir = (String.IsNullOrEmpty(RootDir) ? HttpUtility.HtmlDecode(matched[2].Value) : RootDir);
}
else if (matched[1].Value.StartsWith("category"))
{
- Category = (String.IsNullOrEmpty(Category) ? matched[2].Value : Category);
+ Category = (String.IsNullOrEmpty(Category) ? HttpUtility.HtmlDecode(matched[2].Value) : Category);
}
else if (matched[1].Value.StartsWith("version"))
{
- Version = (String.IsNullOrEmpty(Version) ? matched[2].Value : Version);
+ Version = (String.IsNullOrEmpty(Version) ? HttpUtility.HtmlDecode(matched[2].Value) : Version);
}
else if (matched[1].Value.StartsWith("date"))
{
- Date = (String.IsNullOrEmpty(Date) ? matched[2].Value : Date);
+ Date = (String.IsNullOrEmpty(Date) ? HttpUtility.HtmlDecode(matched[2].Value) : Date);
}
else if (matched[1].Value.StartsWith("author"))
{
- Author = (String.IsNullOrEmpty(Author) ? matched[2].Value : Author);
+ Author = (String.IsNullOrEmpty(Author) ? HttpUtility.HtmlDecode(matched[2].Value) : Author);
// Special cases for SabreDAT
Dictionary attribs = GetLogiqxAttributes(matched[1].Value);
@@ -3073,24 +3073,24 @@ namespace SabreTools.Helper
}
else if (matched[1].Value.StartsWith("email"))
{
- Email = (String.IsNullOrEmpty(Email) ? matched[2].Value : Email);
+ Email = (String.IsNullOrEmpty(Email) ? HttpUtility.HtmlDecode(matched[2].Value) : Email);
}
else if (matched[1].Value.StartsWith("homepage"))
{
- Homepage = (String.IsNullOrEmpty(Homepage) ? matched[2].Value : Homepage);
+ Homepage = (String.IsNullOrEmpty(Homepage) ? HttpUtility.HtmlDecode(matched[2].Value) : Homepage);
}
else if (matched[1].Value.StartsWith("url"))
{
- Url = (String.IsNullOrEmpty(Url) ? matched[2].Value : Url);
+ Url = (String.IsNullOrEmpty(Url) ? HttpUtility.HtmlDecode(matched[2].Value) : Url);
}
else if (matched[1].Value.StartsWith("comment"))
{
- Comment = (String.IsNullOrEmpty(Comment) ? matched[2].Value : Comment);
+ Comment = (String.IsNullOrEmpty(Comment) ? HttpUtility.HtmlDecode(matched[2].Value) : Comment);
}
else if (matched[1].Value.StartsWith("type"))
{
- Type = (String.IsNullOrEmpty(Type) ? matched[2].Value : Type);
- superdat = superdat || matched[2].Value.Contains("SuperDAT");
+ Type = (String.IsNullOrEmpty(Type) ? HttpUtility.HtmlDecode(matched[2].Value) : Type);
+ superdat = superdat || Type.Contains("SuperDAT");
break;
}
else if (matched[1].Value.StartsWith("clrmamepro") || matched[1].Value.StartsWith("romcenter"))
@@ -3153,7 +3153,7 @@ namespace SabreTools.Helper
{
line = sr.ReadLine().Trim();
- if (line.StartsWith("flag"))
+ if (line.StartsWith(" attribs = GetLogiqxAttributes(line.Substring(1, line.Length - 2));
@@ -3163,7 +3163,7 @@ namespace SabreTools.Helper
{
case "type":
Type = (String.IsNullOrEmpty(Type) ? attribs["value"] : Type);
- superdat = superdat || matched[2].Value.Contains("SuperDAT");
+ superdat = superdat || Type.Contains("SuperDAT");
break;
case "forcemerging":
switch (attribs["value"])
@@ -3251,11 +3251,11 @@ namespace SabreTools.Helper
// Standalone game values
if (matched[1].Value.StartsWith("comment"))
{
- comment = matched[2].Value;
+ comment = HttpUtility.HtmlDecode(matched[2].Value);
}
else if (matched[1].Value.StartsWith("description"))
{
- gamedesc = matched[2].Value;
+ gamedesc = HttpUtility.HtmlDecode(matched[2].Value);
if (!softlist)
{
tempname = gamedesc.Replace('/', '_').Replace("\"", "''");
@@ -3263,11 +3263,11 @@ namespace SabreTools.Helper
}
else if (matched[1].Value.StartsWith("year"))
{
- year = matched[2].Value;
+ year = HttpUtility.HtmlDecode(matched[2].Value);
}
else if (matched[1].Value.StartsWith("manufacturer"))
{
- manufacturer = matched[2].Value;
+ manufacturer = HttpUtility.HtmlDecode(matched[2].Value);
}
// Now for the different file types
@@ -3657,7 +3657,7 @@ namespace SabreTools.Helper
MatchCollection mc = Regex.Matches(line, @"(\S*?)=""(.*?)""");
foreach (Match match in mc)
{
- attribs.Add(match.Groups[1].Value, match.Groups[2].Value);
+ attribs.Add(HttpUtility.HtmlDecode(match.Groups[1].Value), HttpUtility.HtmlDecode(match.Groups[2].Value));
}
return attribs;