LINQ не дает добавить новый узел в xml файл - C#

Узнай цену своей работы

Формулировка задачи:

Пытаюсь добавить узел между элементами xml, но что-то видно делаю не так. Пытаюсь найти нужный учел и в него добавить новый. Делаю следующим образом:
                XElement doc = XElement.Parse(xmlPath);
 
                doc.Descendants("element")
                    .First(e => e.Attribute("id").Value == ID)
                    .Add(new XElement("localization", new XAttribute("lang", local), 
                                                      new XAttribute("tooltip", toolTipText), 
                                                      new XAttribute("text", "  ")));
xmlPath - путь к файлу. Программа ругается на параметр "First", пытался заменить на "Where", но та же песня. Лог выдаёт следующее:
Assets/Scripts/TooltipXml.cs(142,42): error CS1061: Type `System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' does not contain a definition for `First' and no extension method `First' of type `System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' could be found (are you missing a using directive or an assembly reference?)
Что не так? Заранее спасибо.
Я попробовал сделать так:
                XElement doc = XElement.Parse(@"<?xml version='1.0' encoding='utf - 8'?>
<root>
<element id = '2'>
<localization lang = 'en' tooltip = 'Cube in cube №2' text = '' />
</element>
</root> ");
 
                doc.Descendants("element")
                    .First(e => e.Attribute("id").Value == ID)
                    .Add(new XElement("localization", new XAttribute("lang", local), 
                                                      new XAttribute("tooltip", toolTipText), 
                                                      new XAttribute("text", "  ")));
Так как понял, что XElement.Parse ест xml строку, но проблема та же. Так же вопрос, как тогда передать в XElement.Parse весь файл xml?

Решение задачи: «LINQ не дает добавить новый узел в xml файл»

textual
Листинг программы
XDocument x = XDocument.Load(xmlPath);
 
x.Descendants("element")
    .First(e => e.Attribute("id").Value == ID)
    .Add(
        new XElement("localization",
            new XAttribute("lang", local), 
            new XAttribute("tooltip", toolTipText), 
            new XAttribute("text", "  ")
    ));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5