Как получить элемент XElement и создать его, если он не существует?
Есть ли способ использовать что-то вроде метода Element в XContainer, но создаст новый XElement и вернет его, если элемент с указанным именем не существует в контейнере?
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