public static string ToTextAll <TRec>(IEnumerable <TRec> records, ChoXmlRecordConfiguration configuration = null, TraceSwitch traceSwitch = null, string xpath = null) where TRec : class { using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoXmlWriter <TRec>(writer, configuration) { TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitch : traceSwitch }) { parser.Configuration.XPath = xpath; parser.Write(records); parser.Close(); writer.Flush(); stream.Position = 0; return(reader.ReadToEnd()); } }
public static string ToTextAll <TRec>(IEnumerable <TRec> records, ChoXmlRecordConfiguration configuration = null, TraceSwitch traceSwitch = null, string xpath = null) where TRec : class { if (records == null) { return(null); } if (typeof(DataTable).IsAssignableFrom(typeof(TRec))) { StringBuilder xml = new StringBuilder(); foreach (var dt in records.Take(1)) { using (var w = new ChoXmlWriter(xml, configuration)) w.Write(dt); } return(xml.ToString()); } else if (typeof(IDataReader).IsAssignableFrom(typeof(TRec))) { StringBuilder xml = new StringBuilder(); foreach (var dt in records.Take(1)) { using (var w = new ChoXmlWriter(xml, configuration)) w.Write(dt); } return(xml.ToString()); } var pe = new ChoPeekEnumerator <TRec>(records, (Func <TRec, bool?>)null); if (configuration == null) { configuration = new ChoXmlRecordConfiguration(); } configuration.IgnoreRootName = false; TRec record = pe.Peek; if (record != null) { if (configuration.NodeName.IsNullOrWhiteSpace()) { ChoDynamicObject rec1 = record as ChoDynamicObject; if (rec1 != null) { configuration.NodeName = rec1.DynamicObjectName; if (configuration.RootName.IsNullOrWhiteSpace()) { configuration.RootName = configuration.NodeName.ToPlural(); } } else { XmlRootAttribute root = ChoType.GetCustomAttribute <XmlRootAttribute>(record.GetType(), false); string nodeName = "XElement"; if (root != null && !root.ElementName.IsNullOrWhiteSpace()) { nodeName = root.ElementName.Trim(); } else { nodeName = record.GetType().Name; } if (configuration.RootName.IsNullOrWhiteSpace()) { configuration.RootName = nodeName.ToPlural(); } configuration.NodeName = nodeName; } } } else { if (configuration.RootName.IsNullOrWhiteSpace()) { configuration.RootName = "Root"; } } using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoXmlWriter <TRec>(writer, configuration) { TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitch : traceSwitch }) { //parser.Configuration.XPath = xpath; parser.Write(pe.ToEnumerable()); parser.Close(); writer.Flush(); stream.Position = 0; return(reader.ReadToEnd()); } }
public static string ToText <TRec>(TRec record, ChoXmlRecordConfiguration configuration = null, TraceSwitch traceSwitch = null, string xpath = null) where TRec : class { if (record is DataTable) { StringBuilder xml = new StringBuilder(); using (var w = new ChoXmlWriter(xml, configuration)) w.Write(record as DataTable); return(xml.ToString()); } else if (record is IDataReader) { StringBuilder xml = new StringBuilder(); using (var w = new ChoXmlWriter(xml, configuration)) w.Write(record as IDataReader); return(xml.ToString()); } if (configuration == null) { configuration = new ChoXmlRecordConfiguration(typeof(TRec)); configuration.IgnoreRootName = true; configuration.RootName = null; } configuration.IgnoreNodeName = true; if (record != null) { if (configuration.NodeName.IsNullOrWhiteSpace()) { ChoDynamicObject rec1 = record as ChoDynamicObject; if (rec1 != null) { if (rec1.DynamicObjectName != ChoDynamicObject.DefaultName) { configuration.NodeName = rec1.DynamicObjectName; } else { //configuration.IgnoreNodeName = true; //configuration.NodeName = null; } } else { XmlRootAttribute root = ChoType.GetCustomAttribute <XmlRootAttribute>(record.GetType(), false); string nodeName = "XElement"; if (root != null && !root.ElementName.IsNullOrWhiteSpace()) { nodeName = root.ElementName.Trim(); } else { nodeName = record.GetType().Name; } configuration.NodeName = nodeName; } } } using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoXmlWriter <TRec>(writer, configuration) { TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitch : traceSwitch }) { //parser.Configuration.XPath = xpath; if (record != null) { parser.Write(ChoEnumerable.AsEnumerable <TRec>(record)); } parser.Close(); writer.Flush(); stream.Position = 0; return(reader.ReadToEnd()); } }