public static ArrayList ParseFromXml(Configuration options, XmlDocument doc, Hashtable sqltypes, Hashtable types, ArrayList sqlentities, ParserValidationDelegate vd)
        {
            ArrayList   messages = new ArrayList();
            XmlNodeList entities = doc.DocumentElement.GetElementsByTagName("message");

            foreach (XmlNode node in entities)
            {
                MessageElement message = new MessageElement();
                message.Name   = node.Attributes["name"].Value;
                message.Text   = node.Attributes["text"].Value;
                message.fields = PropertyElement.ParseFromXml(GetChildNodeByName(node, PROPERTIES), messages, message, sqltypes, types, false, vd);
                messages.Add(message);
            }

            StringCollection names = new StringCollection();

            foreach (MessageElement message in messages)
            {
                if (names.Contains(message.Name))
                {
                    vd(new ParserValidationArgs(ParserValidationSeverity.ERROR, "duplicate message definition for " + message.Name));
                }
                else
                {
                    names.Add(message.Name);
                }
            }
            return(messages);
        }
 /// <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="messageElements"></param>
 public static void ParseFromXml(XmlNode node, IList messageElements)
 {
     if (node != null && messageElements != null)
     {
         foreach (XmlNode messageNode in node.ChildNodes)
         {
             if (messageNode.NodeType.Equals(XmlNodeType.Element))
             {
                 MessageElement messageElement = new MessageElement();
                 BuildElement(messageNode, messageElement);
                 messageElements.Add(messageElement);
             }
         }
     }
 }
        public static void BuildElement(XmlNode node, IPropertyContainer entity, MessageElement message, ParserValidationDelegate vd)
        {
            if (node.Attributes["text"] != null)
            {
                message.Text = node.Attributes["text"].Value;
            }

            message.container = entity;

            // Make sure the parameter names are specified and unique.unique.
            for (int nameChanging = 0; nameChanging < message.Fields.Count; nameChanging++)
            {
                PropertyElement field = (PropertyElement)(message.Fields[nameChanging]);
                if (field.ParameterName == String.Empty)
                {
                    field.ParameterName = field.Name;
                }
                int    sequence    = 1;
                string pName       = field.ParameterName;
                bool   changedName = true;
                while (changedName)
                {
                    changedName = false;
                    for (int nameChecking = 0; nameChecking < nameChanging; nameChecking++)
                    {
                        PropertyElement p = (PropertyElement)(message.Fields[nameChecking]);
                        if (pName.Equals(p.ParameterName))
                        {
                            sequence++;
                            pName       = pName + sequence.ToString();
                            changedName = true;
                        }
                    }
                }

                field.ParameterName = pName;
            }
        }
 public static void BuildElement(XmlNode messageNode, MessageElement messageElement)
 {
     messageElement.Name = GetAttributeValue(messageNode, NAME, messageElement.Name);
     messageElement.Text = GetAttributeValue(messageNode, TEXT, messageElement.Text);
     PropertyElement.ParseFromXml(GetChildNodeByName(messageNode, PROPERTIES), messageElement.Fields);
 }