Как получить элемент XElement и создать его, если он не существует?



Есть ли способ использовать что-то вроде метода Element в XContainer, но создаст новый XElement и вернет его, если элемент с указанным именем не существует в контейнере?

604   3  

3 ответов:

Я думаю, что вы должны написать его сами. Это должен быть статический вспомогательный метод.



    private static XElement GetOrCreateElement(XContainer container, string name) {
        var element = container.Element(name);
        if(element == null)
        {
           element = new XElement(name);
            container.Add(element);
        }
        return element;
    }

Если вы хотите использовать синтаксис вызова членов, сделайте его методом расширения, добавив "this" перед XContainer. В этом случае метод должен находиться в статическом классе без поля, которое можно назвать "XContainerExtensions".

Нет, вы должны написать эту функциональность сами:

var element = container.Element("name");
if(element == null)
{
    element = new XElement("name");
    container.Add(element);
}

Я думаю, что это невозможно, так как Linq-to-XML является языком запросов для XML-данных и не предоставляет CRUD-операций при запросе. Вы должны использовать два шага.

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

Comments

    Ничего не найдено.