diff --git a/SabreTools.Serialization.Readers/ArchiveDotOrg.cs b/SabreTools.Serialization.Readers/ArchiveDotOrg.cs index ab192238..c6e83c6c 100644 --- a/SabreTools.Serialization.Readers/ArchiveDotOrg.cs +++ b/SabreTools.Serialization.Readers/ArchiveDotOrg.cs @@ -65,6 +65,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Files(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List files = []; while (reader.Read()) { @@ -105,6 +109,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Source = reader.GetAttribute("source"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 23d2492c..7c579376 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -75,6 +75,10 @@ namespace SabreTools.Serialization.Readers obj.Debug = reader.GetAttribute("debug").AsYesNo(); obj.MameConfig = reader.GetAttribute("mameconfig"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List games = []; while (reader.Read()) { @@ -121,6 +125,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -227,6 +235,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List confLocations = []; List confSettings = []; @@ -304,6 +316,10 @@ namespace SabreTools.Serialization.Readers obj.Value = reader.GetAttribute("value"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -372,6 +388,10 @@ namespace SabreTools.Serialization.Readers obj.Mandatory = reader.GetAttribute("mandatory").AsYesNo(); obj.Interface = reader.GetAttribute("interface"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List extensions = []; while (reader.Read()) @@ -454,6 +474,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List dipLocations = []; List dipValues = []; @@ -515,6 +539,10 @@ namespace SabreTools.Serialization.Readers obj.Value = reader.GetAttribute("value"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -671,6 +699,10 @@ namespace SabreTools.Serialization.Readers obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List biosSets = []; List roms = []; List disks = []; @@ -931,6 +963,10 @@ namespace SabreTools.Serialization.Readers obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons")); obj.Coins = NumberHelper.ConvertToInt64(reader.GetAttribute("coins")); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List controls = []; while (reader.Read()) @@ -990,6 +1026,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List analogs = []; while (reader.Read()) @@ -1089,6 +1129,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List slotOptions = []; while (reader.Read()) diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs index 694e8844..0a628510 100644 --- a/SabreTools.Serialization.Readers/Logiqx.cs +++ b/SabreTools.Serialization.Readers/Logiqx.cs @@ -77,6 +77,10 @@ namespace SabreTools.Serialization.Readers // TODO: Fix this based on No-Intro DATs // obj.SchemaLocation = reader.GetAttribute("schemaLocation"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List games = []; List dirs = []; while (reader.Read()) @@ -153,6 +157,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Header(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { @@ -375,6 +383,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List subdirs = []; List games = []; @@ -487,6 +499,10 @@ namespace SabreTools.Serialization.Readers obj.CloneOfId = reader.GetAttribute("cloneofid"); obj.Runnable = reader.GetAttribute("runnable").AsRunnable(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List comments = []; List categories = []; List releases = []; @@ -787,6 +803,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Trurip(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index b478adb8..d0628ddb 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -73,6 +73,10 @@ namespace SabreTools.Serialization.Readers obj.Version = reader.GetAttribute("version"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List games = []; while (reader.Read()) { @@ -119,6 +123,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -225,6 +233,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List confLocations = []; List confSettings = []; @@ -302,6 +314,10 @@ namespace SabreTools.Serialization.Readers obj.Value = reader.GetAttribute("value"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -370,6 +386,10 @@ namespace SabreTools.Serialization.Readers obj.Mandatory = reader.GetAttribute("mandatory").AsYesNo(); obj.Interface = reader.GetAttribute("interface"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List extensions = []; while (reader.Read()) @@ -452,6 +472,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List dipLocations = []; List dipValues = []; @@ -513,6 +537,10 @@ namespace SabreTools.Serialization.Readers obj.Value = reader.GetAttribute("value"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -669,6 +697,10 @@ namespace SabreTools.Serialization.Readers obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List biosSets = []; List roms = []; List disks = []; @@ -929,6 +961,10 @@ namespace SabreTools.Serialization.Readers obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons")); obj.Coins = NumberHelper.ConvertToInt64(reader.GetAttribute("coins")); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List controls = []; while (reader.Read()) @@ -988,6 +1024,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List analogs = []; while (reader.Read()) @@ -1087,6 +1127,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List slotOptions = []; while (reader.Read()) diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 08f651e7..f5d8ad8f 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -73,6 +73,10 @@ namespace SabreTools.Serialization.Readers obj.Version = reader.GetAttribute("version"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List games = []; while (reader.Read()) { @@ -119,6 +123,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -225,6 +233,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List confLocations = []; List confSettings = []; @@ -302,6 +314,10 @@ namespace SabreTools.Serialization.Readers obj.Value = reader.GetAttribute("value"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -370,6 +386,10 @@ namespace SabreTools.Serialization.Readers obj.Mandatory = reader.GetAttribute("mandatory").AsYesNo(); obj.Interface = reader.GetAttribute("interface"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List extensions = []; while (reader.Read()) @@ -452,6 +472,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List dipLocations = []; List dipValues = []; @@ -513,6 +537,10 @@ namespace SabreTools.Serialization.Readers obj.Value = reader.GetAttribute("value"); obj.Default = reader.GetAttribute("default").AsYesNo(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -669,6 +697,10 @@ namespace SabreTools.Serialization.Readers obj.RomOf = reader.GetAttribute("romof"); obj.SampleOf = reader.GetAttribute("sampleof"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List biosSets = []; List roms = []; List disks = []; @@ -929,6 +961,10 @@ namespace SabreTools.Serialization.Readers obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons")); obj.Coins = NumberHelper.ConvertToInt64(reader.GetAttribute("coins")); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List controls = []; while (reader.Read()) @@ -988,6 +1024,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List analogs = []; while (reader.Read()) @@ -1087,6 +1127,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List slotOptions = []; while (reader.Read()) diff --git a/SabreTools.Serialization.Readers/NoIntroDatabase.cs b/SabreTools.Serialization.Readers/NoIntroDatabase.cs index bbd79557..e0f1e770 100644 --- a/SabreTools.Serialization.Readers/NoIntroDatabase.cs +++ b/SabreTools.Serialization.Readers/NoIntroDatabase.cs @@ -70,6 +70,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Datafile(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List games = []; while (reader.Read()) { @@ -199,6 +203,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List medias = []; List sources = []; List releases = []; @@ -288,6 +296,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Release(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List files = []; reader.Read(); @@ -406,6 +418,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Source(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List files = []; reader.Read(); diff --git a/SabreTools.Serialization.Readers/OfflineList.cs b/SabreTools.Serialization.Readers/OfflineList.cs index 10a6c092..18e47a72 100644 --- a/SabreTools.Serialization.Readers/OfflineList.cs +++ b/SabreTools.Serialization.Readers/OfflineList.cs @@ -74,6 +74,10 @@ namespace SabreTools.Serialization.Readers // TODO: Fix this schema reading/writing obj.NoNamespaceSchemaLocation = reader.GetAttribute("noNamespaceSchemaLocation"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + while (reader.Read()) { // An ending element means exit @@ -123,6 +127,10 @@ namespace SabreTools.Serialization.Readers { var obj = new CanOpen(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List extensions = []; reader.Read(); @@ -186,6 +194,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Configuration(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { @@ -322,6 +334,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Files(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List romCrcs = []; reader.Read(); @@ -385,6 +401,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Game(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { @@ -506,6 +526,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Games(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List games = []; reader.Read(); @@ -554,6 +578,10 @@ namespace SabreTools.Serialization.Readers { var obj = new GUI(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { @@ -664,6 +692,10 @@ namespace SabreTools.Serialization.Readers obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List images = []; reader.Read(); @@ -712,6 +744,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Infos(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { @@ -1006,6 +1042,10 @@ namespace SabreTools.Serialization.Readers { var obj = new NewDat(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { @@ -1060,6 +1100,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Search(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List tos = []; reader.Read(); @@ -1112,7 +1156,7 @@ namespace SabreTools.Serialization.Readers obj.Default = reader.GetAttribute("default").AsYesNo(); obj.Auto = reader.GetAttribute("auto"); - // Handle uncommon case of no find elements + // Handle empty elements if (reader.IsEmptyElement) return obj; diff --git a/SabreTools.Serialization.Readers/OpenMSX.cs b/SabreTools.Serialization.Readers/OpenMSX.cs index cce1f4bf..72d41f93 100644 --- a/SabreTools.Serialization.Readers/OpenMSX.cs +++ b/SabreTools.Serialization.Readers/OpenMSX.cs @@ -72,6 +72,10 @@ namespace SabreTools.Serialization.Readers obj.Timestamp = reader.GetAttribute("timestamp"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List softwares = []; reader.Read(); @@ -120,6 +124,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Dump(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { @@ -200,6 +208,10 @@ namespace SabreTools.Serialization.Readers else return null; + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + reader.Read(); while (!reader.EOF) { @@ -260,6 +272,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Software(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List dumps = []; reader.Read(); diff --git a/SabreTools.Serialization.Readers/SoftwareList.cs b/SabreTools.Serialization.Readers/SoftwareList.cs index 0b6c9bd2..efce56c9 100644 --- a/SabreTools.Serialization.Readers/SoftwareList.cs +++ b/SabreTools.Serialization.Readers/SoftwareList.cs @@ -74,6 +74,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Description = reader.GetAttribute("description"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List softwares = []; reader.Read(); @@ -133,6 +137,10 @@ namespace SabreTools.Serialization.Readers obj.Width = reader.GetAttribute("width").AsWidth(); obj.Endianness = reader.GetAttribute("endianness").AsEndianness(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List roms = []; reader.Read(); @@ -185,6 +193,10 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List dipValues = []; reader.Read(); @@ -269,6 +281,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List disks = []; reader.Read(); @@ -350,6 +366,10 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Interface = reader.GetAttribute("interface"); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List features = []; List dataAreas = []; List diskAreas = []; @@ -469,6 +489,10 @@ namespace SabreTools.Serialization.Readers obj.CloneOf = reader.GetAttribute("cloneof"); obj.Supported = reader.GetAttribute("supported")?.AsSupported(); + // Handle empty elements + if (reader.IsEmptyElement) + return obj; + List infos = []; List sharedFeats = []; List parts = [];