mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Use better XML methods
This commit is contained in:
@@ -995,16 +995,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
xtw.WriteStartElement("mame");
|
||||
xtw.WriteAttributeString("build", Header.Name);
|
||||
switch (Header.Debug)
|
||||
{
|
||||
case true:
|
||||
xtw.WriteAttributeString("debug", "yes");
|
||||
break;
|
||||
case false:
|
||||
xtw.WriteAttributeString("debug", "no");
|
||||
break;
|
||||
}
|
||||
|
||||
xtw.WriteOptionalAttributeString("debug", Header.Debug.FromYesNo());
|
||||
xtw.WriteOptionalAttributeString("mameconfig", Header.MameConfig);
|
||||
|
||||
xtw.Flush();
|
||||
|
||||
@@ -761,39 +761,23 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteDocType("datafile", "-//Logiqx//DTD ROM Management Datafile//EN", "http://www.logiqx.com/Dats/datafile.dtd", null);
|
||||
|
||||
xtw.WriteStartElement("datafile");
|
||||
|
||||
xtw.WriteOptionalAttributeString("build", Header.Build);
|
||||
switch (Header.Debug)
|
||||
{
|
||||
case true:
|
||||
xtw.WriteAttributeString("debug", "yes");
|
||||
break;
|
||||
case false:
|
||||
xtw.WriteAttributeString("debug", "no");
|
||||
break;
|
||||
}
|
||||
xtw.WriteOptionalAttributeString("debug", Header.Debug.FromYesNo());
|
||||
|
||||
xtw.WriteStartElement("header");
|
||||
xtw.WriteElementString("name", Header.Name);
|
||||
xtw.WriteElementString("description", Header.Description);
|
||||
if (!string.IsNullOrWhiteSpace(Header.RootDir))
|
||||
xtw.WriteElementString("rootdir", Header.RootDir);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Category))
|
||||
xtw.WriteElementString("category", Header.Category);
|
||||
xtw.WriteElementString("version", Header.Version);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Date))
|
||||
xtw.WriteElementString("date", Header.Date);
|
||||
xtw.WriteElementString("author", Header.Author);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Email))
|
||||
xtw.WriteElementString("email", Header.Email);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Homepage))
|
||||
xtw.WriteElementString("homepage", Header.Homepage);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Url))
|
||||
xtw.WriteElementString("url", Header.Url);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Comment))
|
||||
xtw.WriteElementString("comment", Header.Comment);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Type))
|
||||
xtw.WriteElementString("type", Header.Type);
|
||||
|
||||
xtw.WriteFullElementString("name", Header.Name);
|
||||
xtw.WriteFullElementString("description", Header.Description);
|
||||
xtw.WriteOptionalElementString("rootdir", Header.RootDir);
|
||||
xtw.WriteOptionalElementString("category", Header.Category);
|
||||
xtw.WriteFullElementString("version", Header.Version);
|
||||
xtw.WriteOptionalElementString("date", Header.Date);
|
||||
xtw.WriteFullElementString("author", Header.Author);
|
||||
xtw.WriteOptionalElementString("email", Header.Email);
|
||||
xtw.WriteOptionalElementString("homepage", Header.Homepage);
|
||||
xtw.WriteOptionalElementString("url", Header.Url);
|
||||
xtw.WriteOptionalElementString("comment", Header.Comment);
|
||||
xtw.WriteOptionalElementString("type", Header.Type);
|
||||
|
||||
if (Header.ForcePacking != PackingFlag.None
|
||||
|| Header.ForceMerging != MergingFlag.None
|
||||
@@ -979,21 +963,21 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
xtw.WriteStartElement("trurip");
|
||||
|
||||
xtw.WriteOptionalAttributeString("titleid", datItem.Machine.TitleID);
|
||||
xtw.WriteOptionalAttributeString("publisher", datItem.Machine.Publisher);
|
||||
xtw.WriteOptionalAttributeString("developer", datItem.Machine.Developer);
|
||||
xtw.WriteOptionalAttributeString("year", datItem.Machine.Year);
|
||||
xtw.WriteOptionalAttributeString("genre", datItem.Machine.Genre);
|
||||
xtw.WriteOptionalAttributeString("subgenre", datItem.Machine.Subgenre);
|
||||
xtw.WriteOptionalAttributeString("ratings", datItem.Machine.Ratings);
|
||||
xtw.WriteOptionalAttributeString("score", datItem.Machine.Score);
|
||||
xtw.WriteOptionalAttributeString("players", datItem.Machine.Players);
|
||||
xtw.WriteOptionalAttributeString("enabled", datItem.Machine.Enabled);
|
||||
xtw.WriteOptionalAttributeString("titleid", datItem.Machine.TitleID);
|
||||
xtw.WriteOptionalAttributeString("crc", datItem.Machine.HasCrc.FromYesNo());
|
||||
xtw.WriteOptionalAttributeString("source", datItem.Machine.SourceFile);
|
||||
xtw.WriteOptionalAttributeString("cloneof", datItem.Machine.CloneOf);
|
||||
xtw.WriteOptionalAttributeString("relatedto", datItem.Machine.RelatedTo);
|
||||
xtw.WriteOptionalElementString("titleid", datItem.Machine.TitleID);
|
||||
xtw.WriteOptionalElementString("publisher", datItem.Machine.Publisher);
|
||||
xtw.WriteOptionalElementString("developer", datItem.Machine.Developer);
|
||||
xtw.WriteOptionalElementString("year", datItem.Machine.Year);
|
||||
xtw.WriteOptionalElementString("genre", datItem.Machine.Genre);
|
||||
xtw.WriteOptionalElementString("subgenre", datItem.Machine.Subgenre);
|
||||
xtw.WriteOptionalElementString("ratings", datItem.Machine.Ratings);
|
||||
xtw.WriteOptionalElementString("score", datItem.Machine.Score);
|
||||
xtw.WriteOptionalElementString("players", datItem.Machine.Players);
|
||||
xtw.WriteOptionalElementString("enabled", datItem.Machine.Enabled);
|
||||
xtw.WriteOptionalElementString("titleid", datItem.Machine.TitleID);
|
||||
xtw.WriteOptionalElementString("crc", datItem.Machine.HasCrc.FromYesNo());
|
||||
xtw.WriteOptionalElementString("source", datItem.Machine.SourceFile);
|
||||
xtw.WriteOptionalElementString("cloneof", datItem.Machine.CloneOf);
|
||||
xtw.WriteOptionalElementString("relatedto", datItem.Machine.RelatedTo);
|
||||
|
||||
// End trurip
|
||||
xtw.WriteEndElement();
|
||||
@@ -1100,8 +1084,7 @@ namespace SabreTools.Library.DatFiles
|
||||
var rom = datItem as Rom;
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteAttributeString("name", rom.Name);
|
||||
if (rom.Size != -1)
|
||||
xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
if (rom.Size != -1) xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
xtw.WriteOptionalAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
|
||||
@@ -773,11 +773,11 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteAttributeString("noNamespaceSchemaLocation", "xsi", "datas.xsd");
|
||||
|
||||
xtw.WriteStartElement("configuration");
|
||||
xtw.WriteElementString("datName", Header.Name);
|
||||
xtw.WriteFullElementString("datName", Header.Name);
|
||||
xtw.WriteElementString("datVersion", Items.TotalCount.ToString());
|
||||
xtw.WriteElementString("system", Header.System ?? string.Empty);
|
||||
xtw.WriteElementString("screenshotsWidth", Header.ScreenshotsWidth ?? string.Empty);
|
||||
xtw.WriteElementString("screenshotsHeight", Header.ScreenshotsHeight ?? string.Empty);
|
||||
xtw.WriteFullElementString("system", Header.System);
|
||||
xtw.WriteFullElementString("screenshotsWidth", Header.ScreenshotsWidth);
|
||||
xtw.WriteFullElementString("screenshotsHeight", Header.ScreenshotsHeight);
|
||||
|
||||
if (Header.Infos != null)
|
||||
{
|
||||
@@ -810,14 +810,14 @@ namespace SabreTools.Library.DatFiles
|
||||
}
|
||||
|
||||
xtw.WriteStartElement("newDat");
|
||||
xtw.WriteElementString("datVersionURL", Header.Url);
|
||||
xtw.WriteFullElementString("datVersionURL", Header.Url);
|
||||
|
||||
xtw.WriteStartElement("datUrl");
|
||||
xtw.WriteAttributeString("fileName", $"{Header.FileName}.zip");
|
||||
xtw.WriteString(Header.Url);
|
||||
xtw.WriteEndElement();
|
||||
|
||||
xtw.WriteElementString("imURL", Header.Url);
|
||||
xtw.WriteFullElementString("imURL", Header.Url);
|
||||
|
||||
// End newDat
|
||||
xtw.WriteEndElement();
|
||||
@@ -863,7 +863,7 @@ namespace SabreTools.Library.DatFiles
|
||||
// End search
|
||||
xtw.WriteEndElement();
|
||||
|
||||
xtw.WriteElementString("romTitle", Header.RomTitle ?? "%u - %n");
|
||||
xtw.WriteFullElementString("romTitle", Header.RomTitle ?? "%u - %n");
|
||||
|
||||
// End configuration
|
||||
xtw.WriteEndElement();
|
||||
@@ -903,16 +903,16 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("game");
|
||||
xtw.WriteElementString("imageNumber", "1");
|
||||
xtw.WriteElementString("releaseNumber", "1");
|
||||
xtw.WriteElementString("title", datItem.Name ?? string.Empty);
|
||||
xtw.WriteFullElementString("title", datItem.Name);
|
||||
xtw.WriteElementString("saveType", "None");
|
||||
|
||||
if (datItem.ItemType == ItemType.Rom)
|
||||
{
|
||||
var rom = datItem as Rom;
|
||||
xtw.WriteElementString("romSize", rom.Size.ToString() ?? string.Empty);
|
||||
xtw.WriteFullElementString("romSize", rom.Size.ToString());
|
||||
}
|
||||
|
||||
xtw.WriteElementString("publisher", datItem.Machine.Publisher ?? string.Empty);
|
||||
xtw.WriteFullElementString("publisher", datItem.Machine.Publisher);
|
||||
xtw.WriteElementString("location", "0");
|
||||
xtw.WriteElementString("sourceRom", "None");
|
||||
xtw.WriteElementString("language", "0");
|
||||
@@ -973,8 +973,8 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
xtw.WriteElementString("im1CRC", "00000000");
|
||||
xtw.WriteElementString("im2CRC", "00000000");
|
||||
xtw.WriteElementString("comment", datItem.Machine.Comment ?? string.Empty);
|
||||
xtw.WriteElementString("duplicateID", datItem.Machine.CloneOf ?? string.Empty);
|
||||
xtw.WriteFullElementString("comment", datItem.Machine.Comment);
|
||||
xtw.WriteFullElementString("duplicateID", datItem.Machine.CloneOf);
|
||||
|
||||
// End game
|
||||
xtw.WriteEndElement();
|
||||
|
||||
@@ -660,12 +660,12 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Build the state
|
||||
xtw.WriteStartElement("software");
|
||||
xtw.WriteElementString("title", datItem.Machine.Name);
|
||||
xtw.WriteElementString("genmsxid", datItem.Machine.GenMSXID);
|
||||
xtw.WriteElementString("system", datItem.Machine.System);
|
||||
xtw.WriteElementString("company", datItem.Machine.Manufacturer);
|
||||
xtw.WriteElementString("year", datItem.Machine.Year);
|
||||
xtw.WriteElementString("country", datItem.Machine.Country);
|
||||
xtw.WriteFullElementString("title", datItem.Machine.Name);
|
||||
xtw.WriteFullElementString("genmsxid", datItem.Machine.GenMSXID);
|
||||
xtw.WriteFullElementString("system", datItem.Machine.System);
|
||||
xtw.WriteFullElementString("company", datItem.Machine.Manufacturer);
|
||||
xtw.WriteFullElementString("year", datItem.Machine.Year);
|
||||
xtw.WriteFullElementString("country", datItem.Machine.Country);
|
||||
|
||||
xtw.Flush();
|
||||
}
|
||||
@@ -740,35 +740,27 @@ namespace SabreTools.Library.DatFiles
|
||||
case OpenMSXSubType.Rom:
|
||||
case OpenMSXSubType.NULL:
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(rom.Offset))
|
||||
xtw.WriteElementString("start", rom.Offset);
|
||||
if (!string.IsNullOrWhiteSpace(rom.OpenMSXType))
|
||||
xtw.WriteElementString("type", rom.OpenMSXType);
|
||||
if (!string.IsNullOrWhiteSpace(rom.Remark))
|
||||
xtw.WriteElementString("remark", rom.Remark);
|
||||
xtw.WriteFullElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("start", rom.Offset);
|
||||
xtw.WriteOptionalElementString("type", rom.OpenMSXType);
|
||||
xtw.WriteOptionalElementString("remark", rom.Remark);
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
case OpenMSXSubType.MegaRom:
|
||||
xtw.WriteStartElement("megarom");
|
||||
xtw.WriteElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(rom.Offset))
|
||||
xtw.WriteElementString("start", rom.Offset);
|
||||
if (!string.IsNullOrWhiteSpace(rom.OpenMSXType))
|
||||
xtw.WriteElementString("type", rom.OpenMSXType);
|
||||
if (!string.IsNullOrWhiteSpace(rom.Remark))
|
||||
xtw.WriteElementString("remark", rom.Remark);
|
||||
xtw.WriteFullElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("start", rom.Offset);
|
||||
xtw.WriteOptionalElementString("type", rom.OpenMSXType);
|
||||
xtw.WriteOptionalElementString("remark", rom.Remark);
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
case OpenMSXSubType.SCCPlusCart:
|
||||
xtw.WriteStartElement("sccpluscart");
|
||||
if (!string.IsNullOrWhiteSpace(rom.Boot))
|
||||
xtw.WriteElementString("boot", rom.Boot);
|
||||
xtw.WriteElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(rom.Remark))
|
||||
xtw.WriteElementString("remark", rom.Remark);
|
||||
xtw.WriteOptionalElementString("boot", rom.Boot);
|
||||
xtw.WriteFullElementString("hash", rom.SHA1.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("remark", rom.Remark);
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -663,18 +663,14 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
xtw.WriteStartElement("header");
|
||||
|
||||
xtw.WriteElementString("name", Header.Name);
|
||||
xtw.WriteElementString("description", Header.Description);
|
||||
if (!string.IsNullOrWhiteSpace(Header.RootDir))
|
||||
xtw.WriteElementString("rootdir", Header.RootDir);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Category))
|
||||
xtw.WriteElementString("category", Header.Category);
|
||||
xtw.WriteElementString("version", Header.Version);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Date))
|
||||
xtw.WriteElementString("date", Header.Date);
|
||||
xtw.WriteElementString("author", Header.Author);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Comment))
|
||||
xtw.WriteElementString("comment", Header.Comment);
|
||||
xtw.WriteFullElementString("name", Header.Name);
|
||||
xtw.WriteFullElementString("description", Header.Description);
|
||||
xtw.WriteOptionalElementString("rootdir", Header.RootDir);
|
||||
xtw.WriteOptionalElementString("category", Header.Category);
|
||||
xtw.WriteFullElementString("version", Header.Version);
|
||||
xtw.WriteOptionalElementString("date", Header.Date);
|
||||
xtw.WriteFullElementString("author", Header.Author);
|
||||
xtw.WriteOptionalElementString("comment", Header.Comment);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Type)
|
||||
|| Header.ForcePacking != PackingFlag.None
|
||||
|| Header.ForceMerging != MergingFlag.None
|
||||
|
||||
@@ -820,10 +820,10 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
xtw.WriteOptionalAttributeString("description", datItem.Machine.Description);
|
||||
xtw.WriteOptionalAttributeString("year", datItem.Machine.Year);
|
||||
xtw.WriteOptionalAttributeString("publisher", datItem.Machine.Publisher);
|
||||
xtw.WriteOptionalAttributeString("category", datItem.Machine.Category);
|
||||
xtw.WriteOptionalElementString("description", datItem.Machine.Description);
|
||||
xtw.WriteOptionalElementString("year", datItem.Machine.Year);
|
||||
xtw.WriteOptionalElementString("publisher", datItem.Machine.Publisher);
|
||||
xtw.WriteOptionalElementString("category", datItem.Machine.Category);
|
||||
|
||||
if (datItem.Machine.Infos != null && datItem.Machine.Infos.Count > 0)
|
||||
{
|
||||
|
||||
@@ -7,6 +7,21 @@ namespace SabreTools.Library.IO
|
||||
/// </summary>
|
||||
public static class XmlTextWriterExtensions
|
||||
{
|
||||
// TODO: Rename Full to Required, add one for attributes
|
||||
|
||||
/// <summary>
|
||||
/// Force writing separate open and start tags, even for empty elements
|
||||
/// </summary>
|
||||
/// <param name="writer">XmlTextWriter to write out with</param>
|
||||
/// <param name="localName">Name of the element</param>
|
||||
/// <param name="value">Value to write in the element</param>
|
||||
public static void WriteFullElementString(this XmlTextWriter writer, string localName, string value)
|
||||
{
|
||||
writer.WriteStartElement(localName);
|
||||
writer.WriteRaw(value ?? string.Empty);
|
||||
writer.WriteFullEndElement();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write an attribute, if the value is not null or empty
|
||||
/// </summary>
|
||||
@@ -20,16 +35,15 @@ namespace SabreTools.Library.IO
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Force writing separate open and start tags, even for empty elements
|
||||
/// Write an element, if the value is not null or empty
|
||||
/// </summary>
|
||||
/// <param name="writer">XmlTextWriter to write out with</param>
|
||||
/// <param name="localName">Name of the element</param>
|
||||
/// <param name="value">Value to write in the element</param>
|
||||
public static void WriteFullElementString(this XmlTextWriter writer, string localName, string value)
|
||||
public static void WriteOptionalElementString(this XmlTextWriter writer, string localName, string value)
|
||||
{
|
||||
writer.WriteStartElement(localName);
|
||||
writer.WriteRaw(value);
|
||||
writer.WriteFullEndElement();
|
||||
if (string.IsNullOrEmpty(value))
|
||||
writer.WriteElementString(localName, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -910,6 +910,8 @@ namespace SabreTools.Library.Tools
|
||||
#endif
|
||||
}
|
||||
|
||||
// TODO: Write From variants for all above
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input bool?
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user