private static IEnumerable <string> ToHTMLTableInternal(XContainer xel, int padding) { yield return(ObjectExtensions.FormatHTMLLine("<table>", padding)); yield return(ObjectExtensions.FormatHTMLLine("<tr><th>Attribute</th><th>Value</th></tr>", padding + 1)); foreach (XElement xelement in (IEnumerable <XElement>)xel.Elements().OrderBy <XElement, string>((Func <XElement, string>)(o => o.Name.ToString()))) { if (xelement.HasElements) { yield return(ObjectExtensions.FormatHTMLLine(string.Format("<tr><td>{0}</td><td>", (object)xelement.Name), padding + 1)); foreach (string str in ObjectExtensions.ToHTMLTableInternal((XContainer)xelement, padding + 2)) { yield return(str); } yield return(ObjectExtensions.FormatHTMLLine("</td></tr>", padding + 1)); } else { yield return(ObjectExtensions.FormatHTMLLine(string.Format("<tr><td>{0}</td><td>{1}</td></tr>", (object)xelement.Name, (object)HttpUtility.HtmlEncode(xelement.Value)), padding + 1)); } } yield return(ObjectExtensions.FormatHTMLLine("</table>", padding)); }
public static string ToHTMLTable(this object o, BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, int maxArrayElements = 5) { return(ObjectExtensions.ToHTMLTableInternal((XContainer)o.ToXElement(flags, maxArrayElements), 0).Aggregate <string, string>(string.Empty, (Func <string, string, string>)((str, el) => str + el))); }