public ProhibitedSpell(TextSpan value) { AddPropertyDefinitions(() => new[] { CommonProperties.Conditions, }); if (value.TryRemoveInfix("|", out var newValue, out var conditions)) { foreach (var part in conditions.Split('|')) { AddField(part); } value = newValue; } if (value.TryRemovePrefix("ALIGNMENT.", out value)) { Alignments.AddRange(value.Value.Split('.')); } else if (value.TryRemovePrefix("DESCRIPTOR.", out value)) { Descriptors.AddRange(value.Value.Split('.')); } else if (value.TryRemovePrefix("SCHOOL.", out value)) { Schools.AddRange(value.Value.Split('.')); } else if (value.TryRemovePrefix("SUBSCHOOL.", out value)) { SubSchools.AddRange(value.Value.Split('.')); } else if (value.TryRemovePrefix("SPELL.", out value)) { Names.AddRange(value.Value.Split(',')); } else { throw new ParseFailedException(value, "Unable to parse PROHIBITSPELL"); } }
private void Merge_Executed(object sender, ExecutedRoutedEventArgs e) { var dialog = new OpenFileDialog { Filter = "XML Filer (*.xml)|*.xml|Alla Filer (*.*)|*.*" }; if (dialog.ShowDialog() != true) { return; } var file = dialog.FileName; var newschools = new List <School>(); School school = null; SchoolClass schoolClass = null; Student student = null; using (var reader = XmlReader.Create(file)) { while (reader.Read()) { if (!reader.IsStartElement()) { continue; } switch (reader.Name) { case "School": school = new School(reader["Name"], reader["ID"], long.Parse(reader["Changed"])); newschools.Add(school); break; case "SchoolClass": schoolClass = new SchoolClass(reader["Name"], reader["ID"], long.Parse(reader["Changed"])); school?.Classes.Add(schoolClass); break; case "Student": student = new Student(reader["ID"], long.Parse(reader["Changed"])); schoolClass?.Students.Add(student); break; case "Firstname": student.Firstname = reader.ReadElementContentAsString(); break; case "Surname": student.Surname = reader.ReadElementContentAsString(); break; case "Telephone": student.Telephone = reader.ReadElementContentAsString(); break; case "GivSmall": student.Given.Small = reader.ReadElementContentAsInt(); break; case "GivWreaths": student.Given.Wreaths = reader.ReadElementContentAsInt(); break; case "GivLarge": student.Given.Large = reader.ReadElementContentAsInt(); break; case "GivPins": student.Given.Pins = reader.ReadElementContentAsInt(); break; case "GivSign": student.GivSign = reader.ReadElementContentAsString(); break; case "RetSmall": student.Returned.Small = reader.ReadElementContentAsInt(); break; case "RetWreaths": student.Returned.Wreaths = reader.ReadElementContentAsInt(); break; case "RetLarge": student.Returned.Large = reader.ReadElementContentAsInt(); break; case "RetPins": student.Returned.Pins = reader.ReadElementContentAsInt(); break; case "Received": student.Received = reader.ReadElementContentAsInt(); break; case "Sign": student.Sign = reader.ReadElementContentAsString(); break; case "Note": student.Note = reader.ReadElementContentAsString(); break; } } } var mergedschools = School.Merge(Schools, newschools); Schools.Clear(); Schools.AddRange(mergedschools); if (Schools.Count > 0) { CurrentSchool = Schools[0]; } }