/// <summary> /// Converts the <see cref="IDataReader"/> into a <see cref="XDocument"/>. /// </summary> /// <param name="reader">The reader.</param> /// <param name="rootElementName">Name of the root element.</param> /// <param name="rowElementName">Name of the row element.</param> public static XDocument ToXDocument(this IDataReader reader, string rootElementName, string rowElementName) { if (reader == null) { return(null); } if (string.IsNullOrEmpty(rootElementName)) { rootElementName = "root"; } if (string.IsNullOrEmpty(rowElementName)) { rowElementName = "row"; } var xd = XDocument.Parse(string.Format("<{0} />", rootElementName)); reader.AddXElements(xd.Root, rowElementName); return(xd); }
/// <summary> /// Adds the x elements. /// </summary> /// <param name="reader">The reader.</param> /// <param name="rootElement">The root element.</param> /// <param name="rowElementName">Name of the row element.</param> /// <remarks> /// This is the root-level method, adding row-elements to the root element. /// </remarks> public static void AddXElements(this IDataReader reader, XElement rootElement, string rowElementName) { if (reader == null) { return; } if (rootElement == null) { return; } if (string.IsNullOrEmpty(rowElementName)) { rowElementName = "row"; } while (reader.Read()) { var rowElement = new XElement(rowElementName); reader.AddXElements(rowElement); rootElement.Add(rowElement); } }