在LINQ-to-XML中查找或创建元素

时间:2009-03-12 01:26:48

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

我想设置一个可能已经存在或可能不存在的元素的值/子元素。如果元素不存在,我想为我自动创建它。

这样,我的代码只需要担心元素的内容......而不管它是否已经存在。 (当我完成它时,它保证存在)。

LINQ-to-XML中是否已存在此功能?我还没有找到,我正在考虑编写自己的方法。

1 个答案:

答案 0 :(得分:4)

这是我到目前为止所拥有的:

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,而不是像System.Xml.Linq.Extensions.Elements这样的XContainer。唯一的其他非XElement XContainer是XDocument,这个方法对于XDocument不起作用(并没有多大意义)。