public static class XElementExtension { /// <summary> /// Filters XElement by tag name and value. /// </summary> /// <param name="elements">The elements.</param> /// <param name="tag">Name of the tag.</param> /// <param name="value">The tag value.</param> /// <returns></returns> public static IEnumerable<XElement> FilterByTag(this IEnumerable<XElement> elements, string tag, string value) { IEnumerable<XElement> myElements = elements.Where(element =>{ if (element.Name.LocalName == tag) { if (element.HasValue(value) == true) return true; } return false; }); return myElements; } /// <summary> /// Filters XElements by tag name. /// </summary> /// <param name="elements">The elements.</param> /// <param name="name">Name of the tag.</param> /// <returns></returns> public static IEnumerable<XElement> FilterByTag(this IEnumerable<XElement> elements, string name) { IEnumerable<XElement> myElements = elements.Where(element =>{ if (element.Name.LocalName == name) return true; return false; }); return myElements; } /// <summary> /// Filters XElements by class. /// </summary> /// <param name="elements">The elements.</param> /// <param name="attributy">Name of the class attributy.</param> /// <returns></returns> public static IEnumerable<XElement> FilterByClass(this IEnumerable<XElement> elements, string attributy) { IEnumerable<XElement> myElements = elements.Where(element =>{ if (element.HasClass(attributy) == true) return true; return false; }); return myElements; } /// <summary> /// Converts XElements to string. /// </summary> /// <param name="elements">The elements.</param> /// <returns></returns> public static string ToString(this IEnumerable<XElement> elements) { StringBuilder myStringBuilder=new StringBuilder(); foreach(var myElement in elements) { myStringBuilder.AppendLine(myElement.ToString()); } return myStringBuilder.ToString(); } /// <summary> /// Returns all descendants with a perticular tag name. /// </summary> /// <param name="element">The element.</param> /// <param name="tag">Name of the tag.</param> /// <returns></returns> public static IEnumerable<XElement> DescendantsByTag(this XElement element, string tag) { return element.Descendants().FilterByTag(tag); } /// <summary> /// Returns all descendants with a perticular tag name and value. /// </summary> /// <param name="element">The element.</param> /// <param name="tag">Name of the tag.</param> /// <param name="value">The tag value.</param> /// <returns></returns> public static IEnumerable<XElement> DescendantsByTag(this XElement element, string tag, string value) { return element.Descendants().FilterByTag(tag, value); } /// <summary> /// returns FirstOrDefault as string. Additionally checks for null. /// </summary> /// <param name="elements">The elements.</param> /// <param name="defaultValue">The default value.</param> /// <returns></returns> public static string FirstOrDefaultAsString(this IEnumerable<XElement> elements, string defaultValue) { if (elements.FirstOrDefault() != null) return elements.FirstOrDefault().Value.ToString(); return defaultValue; } }
-
-
SQL
SDLC
Programming
Architecture