diff --git a/SabreTools.DatFiles/Formats/ClrMamePro.Writer.cs b/SabreTools.DatFiles/Formats/ClrMamePro.Writer.cs
index 694323c1..ec9e388e 100644
--- a/SabreTools.DatFiles/Formats/ClrMamePro.Writer.cs
+++ b/SabreTools.DatFiles/Formats/ClrMamePro.Writer.cs
@@ -130,7 +130,6 @@ namespace SabreTools.DatFiles.Formats
break;
}
- // TODO: Check required fields
return missingFields;
}
diff --git a/SabreTools.Serialization/Logiqx.cs b/SabreTools.Serialization/Logiqx.cs
index 556b0c09..84923351 100644
--- a/SabreTools.Serialization/Logiqx.cs
+++ b/SabreTools.Serialization/Logiqx.cs
@@ -1,7 +1,38 @@
+using System.IO;
+
namespace SabreTools.Serialization
{
///
/// XML deserializer for Logiqx-derived metadata files
///
- public class Logiqx : XmlSerializer { }
+ public class Logiqx : XmlSerializer
+ {
+ ///
+ /// name field for DOCTYPE
+ ///
+ public const string? DocTypeName = "datafile";
+
+ ///
+ /// pubid field for DOCTYPE
+ ///
+ public const string? DocTypePubId = "-//Logiqx//DTD ROM Management Datafile//EN";
+
+ ///
+ /// sysid field for DOCTYPE
+ ///
+ public const string? DocTypeSysId = "http://www.logiqx.com/Dats/datafile.dtd";
+
+ ///
+ /// subset field for DOCTYPE
+ ///
+ public const string? DocTypeSubset = null;
+
+ ///
+ public static bool SerializeToFileWithDocType(Models.Logiqx.Datafile obj, string path)
+ => SerializeToFile(obj, path, DocTypeName, DocTypePubId, DocTypeSysId, DocTypeSysId);
+
+ ///
+ public static Stream? SerializeToStreamWithDocType(Models.Logiqx.Datafile obj, string path)
+ => SerializeToStream(obj, DocTypeName, DocTypePubId, DocTypeSysId, DocTypeSysId);
+ }
}
\ No newline at end of file
diff --git a/SabreTools.Serialization/OpenMSX.cs b/SabreTools.Serialization/OpenMSX.cs
index 2f88c0eb..17d94692 100644
--- a/SabreTools.Serialization/OpenMSX.cs
+++ b/SabreTools.Serialization/OpenMSX.cs
@@ -1,7 +1,38 @@
+using System.IO;
+
namespace SabreTools.Serialization
{
///
/// XML deserializer for OpenMSX software database files
///
- public class OpenMSX : XmlSerializer { }
+ public class OpenMSX : XmlSerializer
+ {
+ ///
+ /// name field for DOCTYPE
+ ///
+ public const string? DocTypeName = "softwaredb";
+
+ ///
+ /// pubid field for DOCTYPE
+ ///
+ public const string? DocTypePubId = null;
+
+ ///
+ /// sysid field for DOCTYPE
+ ///
+ public const string? DocTypeSysId = "softwaredb1.dtd";
+
+ ///
+ /// subset field for DOCTYPE
+ ///
+ public const string? DocTypeSubset = null;
+
+ ///
+ public static bool SerializeToFileWithDocType(Models.OpenMSX.SoftwareDb obj, string path)
+ => SerializeToFile(obj, path, DocTypeName, DocTypePubId, DocTypeSysId, DocTypeSysId);
+
+ ///
+ public static Stream? SerializeToStreamWithDocType(Models.OpenMSX.SoftwareDb obj, string path)
+ => SerializeToStream(obj, DocTypeName, DocTypePubId, DocTypeSysId, DocTypeSysId);
+ }
}
\ No newline at end of file
diff --git a/SabreTools.Serialization/SoftwareList.cs b/SabreTools.Serialization/SoftwareList.cs
index 00e062f6..68f9f451 100644
--- a/SabreTools.Serialization/SoftwareList.cs
+++ b/SabreTools.Serialization/SoftwareList.cs
@@ -1,7 +1,38 @@
+using System.IO;
+
namespace SabreTools.Serialization
{
///
/// XML deserializer for MAME softwarelist files
///
- public class SoftawreList : XmlSerializer { }
+ public class SoftawreList : XmlSerializer
+ {
+ ///
+ /// name field for DOCTYPE
+ ///
+ public const string? DocTypeName = "softwarelist";
+
+ ///
+ /// pubid field for DOCTYPE
+ ///
+ public const string? DocTypePubId = null;
+
+ ///
+ /// sysid field for DOCTYPE
+ ///
+ public const string? DocTypeSysId = "softwarelist.dtd";
+
+ ///
+ /// subset field for DOCTYPE
+ ///
+ public const string? DocTypeSubset = null;
+
+ ///
+ public static bool SerializeToFileWithDocType(Models.SoftwareList.SoftwareList obj, string path)
+ => SerializeToFile(obj, path, DocTypeName, DocTypePubId, DocTypeSysId, DocTypeSysId);
+
+ ///
+ public static Stream? SerializeToStreamWithDocType(Models.SoftwareList.SoftwareList obj, string path)
+ => SerializeToStream(obj, DocTypeName, DocTypePubId, DocTypeSysId, DocTypeSysId);
+ }
}
\ No newline at end of file
diff --git a/SabreTools.Serialization/XmlSerializer.Serializer.cs b/SabreTools.Serialization/XmlSerializer.Serializer.cs
index 9e60a817..8aff4502 100644
--- a/SabreTools.Serialization/XmlSerializer.Serializer.cs
+++ b/SabreTools.Serialization/XmlSerializer.Serializer.cs
@@ -10,6 +10,16 @@ namespace SabreTools.Serialization
///
public abstract partial class XmlSerializer
{
+ ///
+ /// Serializes the defined type to an XML file
+ ///
+ /// Data to serialize
+ /// Path to the file to serialize to
+ /// Data to serialize
+ /// True on successful serialization, false otherwise
+ public static bool SerializeToFile(T? obj, string path)
+ => SerializeToFile(obj, path, null, null, null, null);
+
///
/// Serializes the defined type to an XML file
///
@@ -21,9 +31,9 @@ namespace SabreTools.Serialization
/// Optional DOCTYPE sysid
/// Optional DOCTYPE name
/// True on successful serialization, false otherwise
- public static bool SerializeToFile(T? obj, string path, string? name = null, string? pubid = null, string? sysid = null, string? subset = null)
+ protected static bool SerializeToFile(T? obj, string path, string? name = null, string? pubid = null, string? sysid = null, string? subset = null)
{
- using var stream = SerializeToStream(obj);
+ using var stream = SerializeToStream(obj, name, pubid, sysid, subset);
if (stream == null)
return false;
@@ -32,6 +42,14 @@ namespace SabreTools.Serialization
return true;
}
+ ///
+ /// Serializes the defined type to a stream
+ ///
+ /// Data to serialize
+ /// Stream containing serialized data on success, null otherwise
+ public static Stream? SerializeToStream(T? obj)
+ => SerializeToStream(obj, null, null, null, null);
+
///
/// Serializes the defined type to a stream
///
@@ -41,7 +59,7 @@ namespace SabreTools.Serialization
/// Optional DOCTYPE sysid
/// Optional DOCTYPE name
/// Stream containing serialized data on success, null otherwise
- public static Stream? SerializeToStream(T? obj, string? name = null, string? pubid = null, string? sysid = null, string? subset = null)
+ protected static Stream? SerializeToStream(T? obj, string? name = null, string? pubid = null, string? sysid = null, string? subset = null)
{
// If the object is null
if (obj == null)
@@ -70,5 +88,6 @@ namespace SabreTools.Serialization
stream.Seek(0, SeekOrigin.Begin);
return stream;
}
+
}
}
\ No newline at end of file