public static ArrayList ParseFromXml(String name, Configuration options, XmlDocument doc, Hashtable sqltypes, Hashtable types, ParserValidationDelegate vd) { ArrayList values = new ArrayList(); XmlNodeList elements = doc.DocumentElement.GetElementsByTagName("enum"); foreach (XmlNode element in elements) { if (element.Attributes["name"].Value.Equals(name) && element.HasChildNodes) { foreach (XmlNode node in element.ChildNodes) { if (node.Name.Equals("value")) { EnumValueElement value = new EnumValueElement(); if (node.Attributes["name"] == null || node.Attributes["code"] == null) { throw new ApplicationException("Enum " + name + " must have name and code properties for each value element"); } value.Name = node.Attributes["name"].Value; value.Code = node.Attributes["code"].Value; if (!node.InnerText.Equals(String.Empty)) { value.Description = node.InnerText; } values.Add(value); } } } } return(values); }
/// <summary> /// Parse only method. Parses and adds all entities found in the given node and adds them to the given /// list. /// </summary> /// <param name="node"></param> /// <param name="enumValueElements"></param> public static void ParseFromXml(XmlNode node, IList enumValueElements) { if (node != null && enumValueElements != null) { foreach (XmlNode enumNode in node.ChildNodes) { if (enumNode.NodeType.Equals(XmlNodeType.Element)) { EnumValueElement enumValueElement = new EnumValueElement(); enumValueElement.Name = GetAttributeValue(enumNode, NAME, enumValueElement.Name); enumValueElement.Code = GetAttributeValue(enumNode, CODE, enumValueElement.Code); enumValueElements.Add(enumValueElement); } } } }
public static ArrayList ParseFromXml(Configuration options, XmlDocument doc, Hashtable sqltypes, Hashtable types, ParserValidationDelegate vd) { ArrayList enums = new ArrayList(); XmlNodeList elements = doc.DocumentElement.GetElementsByTagName("enum"); foreach (XmlNode node in elements) { if (node.NodeType == XmlNodeType.Comment) { continue; } EnumElement type = new EnumElement(); type.Name = node.Attributes["name"].Value; // TODO: this returns all of the children node's innerText as well //type.Description = StringUtil.RemoveTrailingBlankLines(node.InnerText.Trim()); if (node.Attributes["template"] != null) { type.Template = node.Attributes["template"].Value; } if (node.Attributes["integerbased"] != null) { type.IntegerBased = Boolean.Parse(node.Attributes["integerbased"].Value); } type.Values = EnumValueElement.ParseFromXml(type.Name, options, doc, sqltypes, types, vd); // if IsIntegerBased - validate that all values are parsable by Int32 if (type.IntegerBased) { foreach (EnumValueElement v in type.Values) { try { Int32.Parse(v.Code); } catch (Exception) { // parse error - must not be an Int32 vd(ParserValidationArgs.NewError("IntegerBased was set for enum " + type.Name + " and code '" + v.Code + "' was not parsable by Int32.")); } } } enums.Add(type); } return(enums); }
/// <summary> /// Parse only method. Parses and adds all entities found in the given node and adds them to the given /// list. /// </summary> /// <param name="node"></param> /// <param name="enumElements"></param> public static void ParseFromXml(XmlNode node, IList enumElements) { if (node != null && enumElements != null) { foreach (XmlNode enumNode in node.ChildNodes) { if (enumNode.NodeType.Equals(XmlNodeType.Element)) { EnumElement enumElement = new EnumElement(); enumElement.Name = GetAttributeValue(enumNode, NAME, enumElement.Name); enumElement.Template = GetAttributeValue(enumNode, TEMPLATE, enumElement.Template); enumElement.IntegerBased = Boolean.Parse(GetAttributeValue(enumNode, INTEGER_BASED, enumElement.IntegerBased.ToString())); EnumValueElement.ParseFromXml(enumNode, enumElement.Values); enumElements.Add(enumElement); } } } }