Esempio n. 1
0
        private static Step ParseStep(XmlElement stepElement, int index)
        {
            var parameters = new Dictionary <string, string>();

            // attribute model
            foreach (XmlAttribute attr in stepElement.Attributes)
            {
                parameters.Add(ToPascalCase(attr.Name), attr.Value);
            }

            var children = stepElement.SelectNodes("*");

            if (children.Count == 0 && stepElement.InnerXml != null && stepElement.InnerXml.Trim().Length > 0)
            {
                // default property model
                parameters.Add("", stepElement.InnerText);
            }
            else
            {
                // element model
                foreach (XmlElement childElement in children)
                {
                    var name = childElement.Name;
                    if (parameters.ContainsKey(name))
                    {
                        throw new InvalidPackageException(String.Format(SR.Errors.StepParsing.AttributeAndElementNameCollision_2, stepElement.Name, name));
                    }
                    parameters.Add(name, childElement.InnerXml);
                }
            }

            return(Step.BuildStep(index, stepElement.Name, parameters));
        }