/// <summary> /// Create a class from a Xml file generated with the Wizard or saved using the SaveToXml Method. /// </summary> /// <param name="filename">The filename with the Xml definition.</param> /// <returns>The compiled class.</returns> public static Type ClassFromXmlFile(string filename) { ClassBuilder cb = LoadFromXml(filename); return(cb.CreateRecordClass()); }
/// <summary> /// Loads the XML representation of a a ClassBuilder inheritor and return it. (for XML saved with SaveToXml method) /// </summary> /// <remarks> /// ClassBuilder inheritors: <see cref="DelimitedClassBuilder"/> or <see cref="FixedLengthClassBuilder"/> /// </remarks> /// <param name="document">The XML document with the representation of the record class.</param> /// <returns>A new instance of a ClassBuilder inheritor: <see cref="DelimitedClassBuilder"/> or <see cref="FixedLengthClassBuilder"/> </returns> public static ClassBuilder LoadFromXml(XmlDocument document) { ClassBuilder res = null; string classtype = document.DocumentElement.LocalName; if (classtype == "DelimitedClass") { res = DelimitedClassBuilder.LoadXmlInternal(document); } else { res = FixedLengthClassBuilder.LoadXmlInternal(document); } XmlNode node = document.DocumentElement["IgnoreLastLines"]; if (node != null) { res.IgnoreLastLines = int.Parse(node.InnerText); } node = document.DocumentElement["IgnoreFirstLines"]; if (node != null) { res.IgnoreFirstLines = int.Parse(node.InnerText); } node = document.DocumentElement["IgnoreEmptyLines"]; if (node != null) { res.IgnoreEmptyLines = true; } node = document.DocumentElement["CommentMarker"]; if (node != null) { res.IgnoreCommentedLines.CommentMarker = node.InnerText; } node = document.DocumentElement["CommentInAnyPlace"]; if (node != null) { res.IgnoreCommentedLines.InAnyPlace = bool.Parse(node.InnerText.ToLower()); } node = document.DocumentElement["SealedClass"]; res.SealedClass = node != null; node = document.DocumentElement["Namespace"]; if (node != null) { res.Namespace = node.InnerText; } node = document.DocumentElement["Visibility"]; if (node != null) { res.Visibility = (NetVisibility)Enum.Parse(typeof(NetVisibility), node.InnerText); } ; node = document.DocumentElement["RecordCondition"]; if (node != null) { res.RecordCondition.Condition = (RecordCondition)Enum.Parse(typeof(RecordCondition), node.InnerText); } ; node = document.DocumentElement["RecordConditionSelector"]; if (node != null) { res.RecordCondition.Selector = node.InnerText; } res.ReadClassElements(document); node = document.DocumentElement["Fields"]; XmlNodeList nodes; if (classtype == "DelimitedClass") { nodes = node.SelectNodes("/DelimitedClass/Fields/Field"); } else { nodes = node.SelectNodes("/FixedLengthClass/Fields/Field"); } foreach (XmlNode n in nodes) { res.ReadField(n); } return(res); }
internal string GetFieldCode(NetLanguage lang) { StringBuilder sb = new StringBuilder(100); AttributesBuilder attbs = new AttributesBuilder(lang); AddAttributesInternal(attbs, lang); AddAttributesCode(attbs, lang); sb.Append(attbs.GetAttributesCode()); NetVisibility visi = mVisibility; string currentName = mFieldName; if (mClassBuilder.GenerateProperties) { visi = NetVisibility.Private; currentName = "m" + mFieldName; } switch (lang) { case NetLanguage.VbNet: sb.Append(ClassBuilder.GetVisibility(lang, visi) + currentName + " As " + mFieldType); break; case NetLanguage.CSharp: sb.Append(ClassBuilder.GetVisibility(lang, visi) + mFieldType + " " + currentName + ";"); break; default: break; } sb.Append(StringHelper.NewLine); if (mClassBuilder.GenerateProperties) { sb.Append(StringHelper.NewLine); switch (lang) { case NetLanguage.VbNet: sb.Append("Public Property " + mFieldName + " As " + mFieldType); sb.Append(StringHelper.NewLine); sb.Append(" Get"); sb.Append(StringHelper.NewLine); sb.Append(" Return m" + mFieldName); sb.Append(StringHelper.NewLine); sb.Append(" End Get"); sb.Append(StringHelper.NewLine); sb.Append(" Set (value As " + mFieldType + ")"); sb.Append(StringHelper.NewLine); sb.Append(" m" + mFieldName + " = value"); sb.Append(StringHelper.NewLine); sb.Append(" End Set"); sb.Append(StringHelper.NewLine); sb.Append("End Property"); break; case NetLanguage.CSharp: sb.Append("public " + mFieldType + " " + mFieldName); sb.Append(StringHelper.NewLine); sb.Append("{"); sb.Append(StringHelper.NewLine); sb.Append(" get { return m" + mFieldName + "; }"); sb.Append(StringHelper.NewLine); sb.Append(" set { m" + mFieldName + " = value; }"); sb.Append(StringHelper.NewLine); sb.Append("}"); break; default: break; } sb.Append(StringHelper.NewLine); sb.Append(StringHelper.NewLine); } return(sb.ToString()); }