How do i make a ReadFromXML method

Advertisements

i cant figure out how to get the ReadFromXML Method to work

thats my code and i tried what i know but i just cant get it to work

    class XMLOperators
    {
        public static void Write2XML(string path, List<Person> people)
        {
            var writer = new XmlSerializer(typeof(List<Person>));
            var file = File.Create(path);
            writer.Serialize(file, people);
            file.Close();
        }

        public static void ChangeXMLData(string path)
        {
            var dataFromXML = ReadFromXML(path);
            foreach (var person in dataFromXML)
            {
                Console.WriteLine(person.Name);
                Console.WriteLine(person.Birthday);
            }
            Console.WriteLine("Welche Person wollen Sie bearbeiten, "+
                "geben Sie den Namen ein:");
            var name = Console.ReadLine();
            for (int i = 0; i < dataFromXML.Count; i++)
            {
                if (dataFromXML[i].Name.ToLower()==name.ToLower())
                {
                    Console.WriteLine("Was wollen Sie ändern? Geburtsdatum oder Name?");
                    var desicion = Console.ReadLine();
                    if (desicion.ToLower() == "geburtsdatum")
                    {
                        Console.WriteLine("Geburtsdatum ist: " + dataFromXML[i].Birthday);
                        Console.WriteLine("Bitte geben Sie das neue Geburtsdatum ein:");
                        Console.WriteLine("Jahr:");
                        var year = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("Monat:");
                        var month = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("Tag:");
                        var day = Convert.ToInt32(Console.ReadLine());

                        dataFromXML[i].Birthday = new DateTime(year, month, day);
                    }
                    else if (desicion.ToLower() == "name")
                    {
                        Console.WriteLine("Bitte geben Sie den neuen Namen ein");
                        var newName = Console.ReadLine();
                        dataFromXML[i].Name = newName;
                    }
                    else { Console.WriteLine("Die Eingabe war falsch"); }
                }
            }
            Write2XML(path, dataFromXML);
        }
    }

i tried to do it like i did it for the Write2XML, but i think i’m missing something

i think there is the "deserialize" missing but i dont know how to do it

>Solution :

i think what you are missing is something like this

public static List<Person> ReadFromXML(string path)
    {
        var reader = new XmlSerializer(typeof(List<Person>));
        var file = new StreamReader(path);
        var people=(List<Person>)reader.Deserialize(file);
        file.Close();
        return people;
    }

so yea you seserialize with
var people=(List)reader.Deserialize(file);
and also return people;
the rest is the same like from your Write2XML
hope that works for you

Leave a ReplyCancel reply