public static void TestWrite() { CEEvents ceEvents = new CEEvents { CEEvent = new CEEvent[] { new CEEvent { TerrainTypesRequirements = new TerrainType[][] { new TerrainType[] { TerrainType.Water, TerrainType.Steppe } } } } }; string xml = GetEventXml(ceEvents, omitStandardNamespaces: true); string fullPath = BasePath.Name + "Modules/zCaptivityEvents/ModuleLogs/TESTXML.xml"; FileInfo file = new FileInfo(fullPath); file.Directory?.Create(); File.WriteAllText(BasePath.Name + "Modules/zCaptivityEvents/ModuleLogs/TESTXML.xml", xml); }
public static List <CEEvent> DeserializeXMLFileToObject(string XmlFilename) { List <CEEvent> list = new List <CEEvent>(); try { if (string.IsNullOrEmpty(XmlFilename)) { return(null); } StreamReader textReader = new StreamReader(XmlFilename); XmlSerializer xmlSerializer = new XmlSerializer(typeof(CEEvents)); CEEvents xsefsevents = (CEEvents)xmlSerializer.Deserialize(textReader); list.AddRange(xsefsevents.CEEvent); } catch (Exception innerException) { TextObject textObject = new TextObject("{=CEEVENTS1001}Failed to load {FILE} for more information refer to Mount & Blade II Bannerlord\\Modules\\zCaptivityEvents\\ModuleLogs\\LoadingFailedXML.txt"); textObject.SetTextVariable("FILE", XmlFilename); InformationManager.DisplayMessage(new InformationMessage(textObject.ToString(), Colors.Red)); throw new Exception("ERROR DeserializeXMLFileToObject: -- filename: " + XmlFilename, innerException); } return(list); }
public static string GetEventXml(CEEvents obj, XmlSerializer serializer = null, bool omitStandardNamespaces = false) { XmlSerializerNamespaces ns = null; if (omitStandardNamespaces) { ns = new XmlSerializerNamespaces(); ns.Add("", ""); // Disable the xmlns:xsi and xmlns:xsd lines. } using (System.IO.StringWriter textWriter = new System.IO.StringWriter()) { XmlWriterSettings settings = new XmlWriterSettings() { Indent = true }; // For cosmetic purposes. using (XmlWriter xmlWriter = XmlWriter.Create(textWriter, settings)) (serializer ?? new XmlSerializer(obj.GetType())).Serialize(xmlWriter, obj, ns); return(textWriter.ToString()); } }