public ChoXmlReader(Stream inStream, ChoXmlRecordConfiguration configuration = null) { ChoGuard.ArgumentNotNull(inStream, "Stream"); Configuration = configuration; Init(); if (inStream is MemoryStream) { _textReader = new StreamReader(inStream); } else { _textReader = new StreamReader(inStream, Configuration.GetEncoding(inStream), false, Configuration.BufferSize); } _closeStreamOnDispose = true; }
protected override void Clone(ChoRecordConfiguration config) { base.Clone(config); if (!(config is ChoXmlRecordConfiguration)) { return; } ChoXmlRecordConfiguration xconfig = config as ChoXmlRecordConfiguration; xconfig.Indent = Indent; xconfig.IndentChar = IndentChar; xconfig.NamespaceManager = NamespaceManager; xconfig.XmlSerializer = XmlSerializer; xconfig.NullValueHandling = NullValueHandling; xconfig.IgnoreCase = IgnoreCase; }
internal static string ToText(object rec, ChoXmlRecordConfiguration configuration, Encoding encoding, int bufferSize, TraceSwitch traceSwitch = null) { ChoXmlRecordWriter writer = new ChoXmlRecordWriter(rec.GetType(), configuration); writer.TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitchOff : traceSwitch; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var sw = new StreamWriter(stream, configuration.Encoding, configuration.BufferSize)) { writer.WriteTo(sw, new object[] { rec }).Loop(); sw.Flush(); stream.Position = 0; return(reader.ReadToEnd()); } }
private void Init() { _enumerator = new Lazy <IEnumerator <T> >(() => GetEnumerator()); if (Configuration == null) { Configuration = new ChoXmlRecordConfiguration(typeof(T)); } else { Configuration.RecordType = typeof(T); } Configuration.RecordType = ResolveRecordType(Configuration.RecordType); Configuration.IsDynamicObject = Configuration.RecordType.IsDynamicType(); _prevCultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture; System.Threading.Thread.CurrentThread.CurrentCulture = Configuration.Culture; }
internal void Validate(ChoXmlRecordConfiguration config) { try { if (FieldName.IsNullOrWhiteSpace()) { FieldName = Name; } if (XPath.IsNullOrWhiteSpace()) { throw new ChoRecordConfigurationException("Missing XPath."); } if (FillChar != null) { if (FillChar.Value == ChoCharEx.NUL) { throw new ChoRecordConfigurationException("Invalid '{0}' FillChar specified.".FormatString(FillChar)); } } if (Size != null && Size.Value <= 0) { throw new ChoRecordConfigurationException("Size must be > 0."); } if (ErrorMode == null) { ErrorMode = config.ErrorMode; // config.ErrorMode; } if (IgnoreFieldValueMode == null) { IgnoreFieldValueMode = config.IgnoreFieldValueMode; } if (QuoteField == null) { QuoteField = config.QuoteAllFields; } } catch (Exception ex) { throw new ChoRecordConfigurationException("Invalid configuration found at '{0}' field.".FormatString(Name), ex); } }
public ChoXmlReader(string filePath, string defaultNamespace) { ChoGuard.ArgumentNotNullOrEmpty(filePath, "FilePath"); Configuration = new ChoXmlRecordConfiguration(); if (!defaultNamespace.IsNullOrWhiteSpace()) { Configuration.NamespaceManager.AddNamespace("", defaultNamespace); } Init(); _sr = new StreamReader(ChoPath.GetFullPath(filePath), Configuration.GetEncoding(filePath), false, Configuration.BufferSize); _xmlReader = XmlReader.Create(_sr, new XmlReaderSettings() { DtdProcessing = DtdProcessing.Ignore, XmlResolver = null }, new XmlParserContext(null, Configuration.NamespaceManager, null, XmlSpace.None)); _closeStreamOnDispose = true; }
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) { TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitch : traceSwitch }) { parser.Configuration.XPath = xpath; parser.Write(records); 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()); } }
public IEnumerable <T> DeserializeText(string inputText, Encoding encoding = null, ChoXmlRecordConfiguration configuration = null, TraceSwitch traceSwitch = null) { if (configuration == null) { configuration = Configuration; } return(new ChoXmlReader <T>(inputText.ToStream(encoding), configuration) { TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitch : traceSwitch }); }
public static ChoXmlReader <T> LoadText(string inputText, Encoding encoding = null, ChoXmlRecordConfiguration configuration = null, TraceSwitch traceSwitch = null) { var r = new ChoXmlReader <T>(inputText.ToStream(encoding), configuration) { TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitch : traceSwitch }; return(r); }
public ChoXmlReader(StringBuilder sb, ChoXmlRecordConfiguration configuration = null) : this(new StringReader(sb.ToString()), configuration) { }
internal static IEnumerator <object> LoadText(Type recType, string inputText, ChoXmlRecordConfiguration configuration, Encoding encoding, int bufferSize) { ChoXmlRecordReader rr = new ChoXmlRecordReader(recType, configuration); rr.TraceSwitch = ChoETLFramework.TraceSwitchOff; return(rr.AsEnumerable(new StreamReader(inputText.ToStream(), encoding, false, bufferSize)).GetEnumerator()); }
public static ChoXmlReader <T> LoadText(string inputText, Encoding encoding = null, ChoXmlRecordConfiguration configuration = null) { var r = new ChoXmlReader <T>(inputText.ToStream(encoding), configuration); return(r); }
public ChoXmlWriter(StringBuilder sb, ChoXmlRecordConfiguration configuration = null) : this(new StringWriter(sb), configuration) { }
public static string ToText <TRec>(TRec record, ChoXmlRecordConfiguration configuration = null, TraceSwitch traceSwitch = null, string xpath = null) where TRec : class { return(ToTextAll(ChoEnumerable.AsEnumerable <TRec>(record), configuration, traceSwitch)); }
public ChoXmlReader(ChoXmlRecordConfiguration configuration = null) { Configuration = configuration; Init(); }
public ChoXmlWriter(ChoXmlRecordConfiguration configuration = null) { Configuration = configuration; }
public static ChoXmlReader <T> LoadXElements(IEnumerable <XElement> xElements, ChoXmlRecordConfiguration configuration = null) { var r = new ChoXmlReader <T>(xElements, configuration); r._closeStreamOnDispose = true; return(r); }