internal static T GetOrCreateAfter <T>(this OpenXmlCompositeElement element, OpenXmlElement after) where T : OpenXmlElement, new() { if (!element.Has <T>()) { element.InsertAfter(new T(), after); } return(element.Elements <T>().First()); }
internal static T GetOrCreateBefore <T>(this OpenXmlCompositeElement element, OpenXmlElement before) where T : OpenXmlElement, new() { if (!element.Has <T>()) { element.InsertBefore(new T(), before); } return(element.Elements <T>().First()); }
internal static T GetOrCreate <T>(this OpenXmlCompositeElement element, bool prepend) where T : OpenXmlElement, new() { if (!element.Has <T>()) { if (prepend) { element.PrependChild(new T()); } else { element.AppendChild(new T()); } } return(element.Elements <T>().First()); }