Найти или создать элемент в LINQ-to-XML - PullRequest
1 голос
/ 12 марта 2009

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

Таким образом, мой код должен беспокоиться только о содержимом элемента ... а не о том, существует он или нет. (К тому времени, как я закончу с этим, он гарантированно будет существовать).

Эта функция уже существует в LINQ-to-XML? Я еще не нашел его и собираюсь написать свой собственный метод.

1 Ответ

4 голосов
/ 12 марта 2009

Вот что у меня есть:

public static IEnumerable<XElement> ElementsOrCreate(this XElement parent, XName name)
{
    IEnumerable<XElement> elements = parent.Elements(name);
    if (!elements.Any())
    {
      XElement element = new XElement(name);
      parent.Add(element);
      elements = new XElement[] { element };
    }
    return elements;
}

Обратите внимание, что первым аргументом (для расширения) является XElement, а не XContainer, как System.Xml.Linq.Extensions.Elements. Единственный другой не XElement XContainer - это XDocument, и этот метод не работает (и не имеет особого смысла) для XDocument.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...