public void WriteXml(XmlWriter writer) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(List <KeyEntry>)); List <KeyEntry> keyEntries = new List <KeyEntry>(); foreach (KeyValuePair <long, List <long> > thisColl in CharCollection) { keyEntries.Add(new KeyEntry() { Key = thisColl.Key, Item = thisColl.Value }); } writer.WriteStartElement("Character"); writer.WriteAttributeString("name", name); writer.WriteAttributeString("AdvLvl", AdvLvl.ToString()); writer.WriteAttributeString("AdvClass", AdvClass.ToString()); writer.WriteAttributeString("TimePlayed", TimePlayed.ToString()); writer.WriteAttributeString("DaybreakID", DaybreakID.ToString()); writer.WriteAttributeString("ServerID", ServerID.ToString()); xmlSerializer.Serialize(writer, keyEntries); writer.WriteFullEndElement(); keyEntries.Clear(); }
public void ReadXml(XmlReader reader) { List <KeyEntry> keyEntries; XmlSerializer xmlSerializer = new XmlSerializer(typeof(List <KeyEntry>)); _ = reader.MoveToContent(); reader.ReadStartElement("Characters"); name = reader.GetAttribute("name"); AdvLvl = short.Parse(reader.GetAttribute("AdvLvl")); AdvClass = short.Parse(reader.GetAttribute("AdvClass")); TimePlayed = long.Parse(reader.GetAttribute("TimePlayed")); DaybreakID = long.Parse(reader.GetAttribute("DaybreakID")); short MaybeServer; try { MaybeServer = short.Parse(reader.GetAttribute("ServerID")); } catch (ArgumentNullException) { XDocument RawServer = Program.GetThisURL(string.Concat(@"character/?c:show=locationdata.worldid&id=", DaybreakID.ToString())); MaybeServer = short.Parse(RawServer.Root.Element("character").Element("locationdata").Attribute("worldid").Value); } ServerID = MaybeServer; reader.ReadStartElement("Character"); keyEntries = (List <KeyEntry>)xmlSerializer.Deserialize(reader); foreach (KeyEntry keyEntry in keyEntries) { if (!CharCollection.ContainsKey(keyEntry.Key)) { CharCollection[keyEntry.Key] = new List <long>(); } CharCollection[keyEntry.Key].AddRange(keyEntry.Item); } keyEntries.Clear(); reader.ReadEndElement(); reader.ReadEndElement(); }