我想设置一个可能已经存在也可能不存在的元素的值/子元素。如果该元素不存在,我想为我自动创建它。
这样,我的代码只需要担心元素的内容......而不是它是否已经存在。(当我完成它时,它保证存在)。
LINQ-to-XML 中是否已经存在此功能?我还没有找到它,正在考虑编写我自己的方法。
我想设置一个可能已经存在也可能不存在的元素的值/子元素。如果该元素不存在,我想为我自动创建它。
这样,我的代码只需要担心元素的内容......而不是它是否已经存在。(当我完成它时,它保证存在)。
LINQ-to-XML 中是否已经存在此功能?我还没有找到它,正在考虑编写我自己的方法。
这是我到目前为止所拥有的:
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 不起作用(并且没有多大意义)。