Удалить элемент из файла XML с помощью C # - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь написать и удалить элементы (категории), которые я сохранил в файле XML. Я выяснил, как добавить, используя новые XElement и doc.Root.Add, но я не знаю, как удалить и элемент, который имеет такой же заголовок, как у ввода.

XML:

<?xml version="1.0" encoding="utf-8"?>
<categories>
  <category title="Horror"></category>
  <category title="Romance"></category>
  <category title="Health"></category>
  <category title="SciFi"></category>
  <category title="Programming" />
  <category title="History" />
</categories>

C #:

public static void RemoveFromCategoryXMLFile(string title)
{
    XmlDocument doc = new XmlDocument();
    doc.Load("../../DAL/XML_Categories/Categories.xml");

    XmlNode node = doc.SelectSingleNode($"/categories/category[@name='{title}']");

    if (node != null)
    {
        XmlNode parent = node.ParentNode;
        parent.RemoveChild(node);
        doc.Save("../../DAL/XML_Categories/Categories.xml");
    }
}

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

1 Ответ

1 голос
/ 30 октября 2019

Рекомендуется использовать XDocument, так как это более новый класс для анализа XML. С таким классом достаточно использовать такой код:

var title = "Horror";
var xml = XDocument.Load(@"path to XML");

xml.Root.Elements("category").Where(e => e.Attribute("title").Value == title).Remove();

xml.Save(@"path to output XML");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...