예제 #1
0
        public virtual object Create(object parent, object configContext, XmlNode section)
        {
            if (section.Attributes != null && section.Attributes.Count != 0)
            {
                HandlersUtil.ThrowException("Unrecognized attribute", section);
            }

            XmlNodeList reqHandlers = section.ChildNodes;

            foreach (XmlNode child in reqHandlers)
            {
                XmlNodeType ntype = child.NodeType;
                if (ntype == XmlNodeType.Whitespace || ntype == XmlNodeType.Comment)
                {
                    continue;
                }

                if (ntype != XmlNodeType.Element)
                {
                    HandlersUtil.ThrowException("Only elements allowed", child);
                }

                string name = child.Name;
                if (name == "clear")
                {
                    if (child.Attributes != null && child.Attributes.Count != 0)
                    {
                        HandlersUtil.ThrowException("Unrecognized attribute", child);
                    }

                    WebRequest.ClearPrefixes();
                    continue;
                }

                string prefix = HandlersUtil.ExtractAttributeValue("prefix", child);
                if (name == "add")
                {
                    string type = HandlersUtil.ExtractAttributeValue("type", child, false);
                    if (child.Attributes != null && child.Attributes.Count != 0)
                    {
                        HandlersUtil.ThrowException("Unrecognized attribute", child);
                    }

                    WebRequest.AddPrefix(prefix, type);
                    continue;
                }

                if (name == "remove")
                {
                    if (child.Attributes != null && child.Attributes.Count != 0)
                    {
                        HandlersUtil.ThrowException("Unrecognized attribute", child);
                    }

                    WebRequest.RemovePrefix(prefix);
                    continue;
                }

                HandlersUtil.ThrowException("Unexpected element", child);
            }

            return(null);
        }