/// <summary> /// Serialize an element /// </summary> protected virtual void SerializeElement(HElement element, TextWriter writer) { writer.Write("<{0}", element.Name); foreach (var attr in element.Attributes()) { SerializeAttribute(attr.Name, attr.Value, writer); } if (element.HasNodes || !IsVoidElement(element.Name)) { writer.Write(">"); if (IsRawElement(element.Name)) { SerializeRawText(element.Nodes(), writer); } else if (IsEscapableRawElement(element.Name)) { SerializeEscapableRawText(element.Nodes(), writer); } else { SerializeContainer(element, writer); } writer.Write("</{0}>", element.Name); } else { writer.Write(" />"); } }
/// <summary> /// Indicates if an element contains any data value /// </summary> public static bool HasData(this HElement element) { if (element == null) { return(false); } return(element.Attributes().Where(attr => attr.Name.StartsWith("data-", StringComparison.OrdinalIgnoreCase)).Any()); }
/// <summary> /// Remove a list of data values to an element /// </summary> public static HElement RemoveData(this HElement element, params String[] keys) { if (element != null) { // Build the key list from the context if (keys != null && keys.Length > 0) { // Convert all keys to data keys keys = keys.Select(k => MakeDataKey(k)).ToArray(); } else { // Extract all data keys keys = element.Attributes().Where(attr => attr.Name.StartsWith("data-", StringComparison.OrdinalIgnoreCase)).Select(attr => attr.Name).ToArray(); } foreach (var key in keys) { element.Attr(key, null); } } return(element); }