Как удалить элемент из XML-файла в C # - PullRequest
1 голос
/ 30 мая 2019

У меня есть список людей с некоторыми данными, которые называются Персона. Я хотел бы удалить выбранного человека на основе его имени (в этом примере).

Это мой код, который сохраняет список людей в файл XML:

        string path = "E:\\test.xml";
        var list = new List<Person>();
        list.Add(new Person { Name = "Tom", Value = 40 });
        list.Add(new Person { Name = "John", Value = 33 });
        var serializer = new XmlSerializer(typeof(List<Person>));
        var writer = new StreamWriter(path);
        serializer.Serialize(writer, list);
        writer.Close();

Теперь я хотел бы удалить объект Person Джон и все данные, связанные с этим объектом, из XML-файла.

Я пробовал несколько вещей, но ни одна из них, казалось, не работала. Я хотел бы узнать, как это сделать, используя этот простой пример, который поможет мне выйти вперед.

С уважением, Тамара

1 Ответ

1 голос
/ 30 мая 2019

Как уже упоминалось в комментариях, вам нужно прочитать файл XML в объект XDocument.После создания XDocument вы можете работать с элементами внутри этого XDocument.Ниже описано, как удалить элемент, в котором значение равно «Джон»

 var xml = File.ReadAllText(path);
            XDocument doc = XDocument.Parse(xml);
            doc.Descendants().Elements("Person")
                .Where(x => x.Element("Name")?.Value == "John")
                .Remove();
            var result = doc.ToString();
.
...