如何获取XElement,如果它不存在则创建它?

时间:2013-02-15 10:22:27

标签: c# .net xml linq-to-xml

有没有办法在XContainer中使用类似Element方法的东西,但会创建一个新的XElement并返回如果容器中不存在具有指定名称的Element?

3 个答案:

答案 0 :(得分:4)

我认为你应该自己写。它应该是一个静态辅助方法。



    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;
    }

如果您希望使用成员调用语法,请通过在XContainer前添加“this”使其成为扩展方法。在这种情况下,该方法应该是一个静态类,没有可以称为“XContainerExtensions”的字段。

答案 1 :(得分:0)

不,你必须自己编写这个功能:

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

答案 2 :(得分:0)

我认为这是不可能的,因为Linq-to-XML是XML-Data的查询语言,并且在查询时不提供CRUD操作。你必须使用两个步骤。

首先查询您的元素,如果我不存在,您必须将新元素添加到容器中。

相关问题