3

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

4

3 回答 3

6

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



    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”的字段的静态类中。

于 2013-02-15T10:34:43.837 回答
0

不,您必须自己编写该功能:

var element = container.Element("name");
if(element == null)
{
    element = new XElement("name");
    container.Add(element);
}
于 2013-02-15T10:28:59.707 回答
0

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

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

于 2013-02-15T10:29:53.827 回答