public void Save() { if (string.IsNullOrEmpty(File)) { string filename = string.Empty; // ReSharper disable LoopCanBeConvertedToQuery foreach (char chr in Name) // ReSharper restore LoopCanBeConvertedToQuery { if (char.IsLetter(chr)) { filename += chr.ToString(); } } if (filename == "") { filename = "1"; } File = CHelper.GetUniqueFileName(Path.Combine(CSettings.DataFolder, CConfig.FolderPlaylists), filename + ".xml"); } SPlaylist data = new SPlaylist { Info = { Name = Name }, Songs = Songs.Select(plSong => plSong.ToStruct()).ToArray() }; var xml = new CXmlSerializer(); xml.Serialize(File, data); }
public void TestDefaultValues() { const string s = _Head + @"<root> <I>1</I> <S>2</S> <F>3</F> <D>4</D> <Sub> <I>22</I> </Sub> </root>"; _AssertSerDeserMatch <SDefault>(s); var xml = new CXmlDeserializer(new CXmlErrorHandler(exception => { })); SDefault foo = xml.DeserializeString <SDefault>(@"<root />"); Assert.AreEqual(foo.I, 1337); Assert.AreEqual(foo.F, null); Assert.AreEqual(foo.S, "Foo"); Assert.AreEqual(foo.D, 666); Assert.AreEqual(foo.Sub.I, 111); string newXml = new CXmlSerializer().Serialize(foo); Assert.AreEqual(_Head + @"<root> <Sub /> </root>", newXml); }
public void TestRealFiles() { Type[] types = new Type[] { typeof(SThemeCover), typeof(CConfig.SConfig), typeof(SThemeScreen), typeof(SDefaultFonts), typeof(SSkin), typeof(STheme), typeof(Dictionary <string, string>) }; string filePath = Path.Combine(new string[] { AppDomain.CurrentDomain.BaseDirectory, "..", "..", "..", "TestXmlFiles" }); foreach (Type type in types) { string xmlPath = Path.Combine(filePath, type.Name + ".xml"); var deser = new CXmlDeserializer(); object foo = null; try { foo = deser.Deserialize(xmlPath, Activator.CreateInstance(type)); } catch (Exception e) { Assert.Fail("Exception with " + type.Name + ": {0}", new object[] { e.Message }); } Assert.IsInstanceOfType(foo, type, "Wrong type with " + type.Name); var ser = new CXmlSerializer(type == typeof(CConfig.SConfig)); string newXml = ser.Serialize(foo, type == typeof(Dictionary <string, string>) ? "resources" : null); // Typename will be uppercase but input is lowercase newXml = newXml.Replace("<String", "<string").Replace("</String", "</string"); string oldXml = File.ReadAllText(xmlPath); Assert.AreEqual(oldXml, newXml, "Error with " + type.Name); } }
public void TestArrayEmbedded() { var xml = new CXmlDeserializer(); var ser = new CXmlSerializer(); SArrayEmb foo = xml.DeserializeString <SArrayEmb>(_XmlListEmb); Assert.AreEqual(foo.Ints.Length, 1, "Deserialization failed"); Assert.AreEqual(foo.Ints[0].I, 1, "Deserialization failed"); string res = ser.Serialize(foo); Assert.AreEqual(_XmlListEmb, res, "Serialization failed"); foo = xml.DeserializeString <SArrayEmb>(_XmlListEmb2); Assert.AreEqual(foo.Ints.Length, 2, "Deserialization failed"); Assert.AreEqual(foo.Ints[1].I, 2, "Deserialization failed"); res = ser.Serialize(foo); Assert.AreEqual(_XmlListEmb2, res, "Serialization failed"); foo = xml.DeserializeString <SArrayEmb>(_XmlListEmb3); Assert.AreEqual(foo.Ints.Length, 0, "Deserialization failed"); res = ser.Serialize(foo); Assert.AreEqual(_XmlListEmb3, res, "Serialization failed"); ser = new CXmlSerializer(true); foo.Ints = new SEntry[0]; res = ser.Serialize(foo); Assert.AreEqual(_XmlListEmb4, res, "Serialization failed"); _AssertFail <SArrayEmb, CXmlException>(_Empty); }
public void SaveProfile() { if (String.IsNullOrEmpty(FilePath)) { string filename = string.Empty; // ReSharper disable LoopCanBeConvertedToQuery foreach (char chr in PlayerName) // ReSharper restore LoopCanBeConvertedToQuery { if (char.IsLetter(chr)) { filename += chr.ToString(); } } if (filename == "") { filename = "1"; } FilePath = CHelper.GetUniqueFileName(Path.Combine(CBase.Settings.GetDataPath(), CBase.Settings.GetFolderProfiles()), filename + ".xml"); } var xml = new CXmlSerializer(); xml.Serialize(FilePath, this); }
private bool _ConvertProfile(ref Exception e) { var xml = new CXmlDeserializer(); var ser = new CXmlSerializer(); try { var old = xml.Deserialize <SOldXmlProfile>(FilePath); string newXml = ser.Serialize(old.Info); xml.DeserializeString(newXml, this); if (ID == null) { ID = Guid.NewGuid(); } ser.Serialize(FilePath, this); } catch (Exception e2) { if (!(e2 is CXmlException)) { e = e2; } return(false); } return(true); }
private static T _AssertSerDeserMatch <T>(string xmlString) where T : new() { var deserializer = new CXmlDeserializer(); var serializer = new CXmlSerializer(); T foo = deserializer.DeserializeString <T>(xmlString); string xmlNew = serializer.Serialize(foo); Assert.AreEqual(xmlString, xmlNew); return(foo); }
public virtual void SaveTheme() { if (string.IsNullOrEmpty(ThemePath)) { return; } _ReadThemeSubElements(); try { CXmlSerializer serializer = new CXmlSerializer(); serializer.Serialize(Path.Combine(ThemePath, ThemeName + ".xml"), Theme); } catch (Exception e) { CLog.Error("Error while saving theme-file: " + ThemeName + " " + e.Message, true); } }
public void TestRealFiles([Values(typeof(SThemeCover), typeof(CConfig.SConfig), /*typeof(SThemeScreen),*/ typeof(SDefaultFonts), typeof(SSkin), typeof(STheme), typeof(Dictionary <string, string>))] Type type) { string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..", "..", "VocaluxeLib", "XML", "TestFiles"); string xmlPath = Path.Combine(filePath, type.Name + ".xml"); var deser = new CXmlDeserializer(); object foo = deser.Deserialize(xmlPath, Activator.CreateInstance(type)); Assert.IsInstanceOf(type, foo, "Wrong type with " + type.Name); var ser = new CXmlSerializer(type == typeof(CConfig.SConfig)); string newXml = ser.Serialize(foo, type == typeof(Dictionary <string, string>) ? "resources" : null); // Typename will be uppercase but input is lowercase newXml = newXml.Replace("<String", "<string").Replace("</String", "</string"); string oldXml = File.ReadAllText(xmlPath); Assert.AreEqual(oldXml, newXml, "Recontructed XML has differences."); }
public void TestExisting() { var foo = new SIgnore { I = 1 }; var xml = new CXmlDeserializer(); var ser = new CXmlSerializer(); SIgnore bar = xml.DeserializeString(_XmlIgnore, foo); Assert.AreEqual(1, bar.I); Assert.AreEqual(_XmlIgnore, ser.Serialize(bar)); var foo2 = new CIgnore { I = 1 }; CIgnore bar2 = xml.DeserializeString(_XmlIgnore, foo2); Assert.AreEqual(1, bar2.I); Assert.AreEqual(foo2.J, bar2.J, "Original classes should be modified by the deserialization"); Assert.AreEqual(_XmlIgnore, ser.Serialize(bar2)); }
public void TestArray() { var xml = new CXmlDeserializer(); var ser = new CXmlSerializer(); SArray foo = xml.DeserializeString <SArray>(_XmlList[0]); Assert.AreEqual(foo.Ints.Length, 2, "Deserialization failed"); Assert.AreEqual(foo.Ints[0].I, 1, "Deserialization failed"); Assert.AreEqual(foo.Ints[1].I, 1, "Deserialization failed"); string res = ser.Serialize(foo); Assert.AreEqual(_XmlList[0], res, "Serialization failed"); foo = xml.DeserializeString <SArray>(_XmlList[1]); Assert.AreEqual(foo.Ints.Length, 0, "Deserialization2 failed"); res = ser.Serialize(foo); Assert.AreEqual(_XmlList[2], res, "Serialization2 failed"); foo = xml.DeserializeString <SArray>(_XmlList[2]); Assert.AreEqual(foo.Ints.Length, 0, "Deserialization2 failed"); res = ser.Serialize(foo); Assert.AreEqual(_XmlList[2], res, "Serialization2 failed"); _AssertFail <SArray, CXmlException>(_Empty); }
public void TestList() { var xml = new CXmlDeserializer(); var ser = new CXmlSerializer(); SList foo = xml.DeserializeString <SList>(_XmlList[0]); Assert.AreEqual(foo.Ints.Count, 2, "Deserialization failed"); Assert.AreEqual(foo.Ints[0].I, 1, "Deserialization failed"); Assert.AreEqual(foo.Ints[1].I, 1, "Deserialization failed"); string res = ser.Serialize(foo); Assert.AreEqual(_XmlList[0], res, "Serialization failed"); foo = xml.DeserializeString <SList>(_XmlList[1]); Assert.AreEqual(foo.Ints.Count, 0, "Deserialization2 failed"); res = ser.Serialize(foo); Assert.AreEqual(_XmlList[2], res, "Serialization2 failed"); foo = xml.DeserializeString <SList>(_XmlList[2]); Assert.AreEqual(foo.Ints.Count, 0, "Deserialization2 failed"); _AssertSerDeserMatch <SList>(_XmlList[2]); res = ser.Serialize(foo); Assert.AreEqual(_XmlList[2], res, "Serialization2 failed"); _AssertFail <SList, CXmlException>(_Empty); }