internal static object CreateStatic(object parent, XmlNode section, string keyAttriuteName, string valueAttributeName) { ReadOnlyNameValueCollection result; // start result off as a shallow clone of the parent if (parent == null) { result = new ReadOnlyNameValueCollection(StringComparer.OrdinalIgnoreCase); } else { ReadOnlyNameValueCollection parentCollection = (ReadOnlyNameValueCollection)parent; result = new ReadOnlyNameValueCollection(parentCollection); } // process XML HandlerBase.CheckForUnrecognizedAttributes(section); foreach (XmlNode child in section.ChildNodes) { // skip whitespace and comments if (HandlerBase.IsIgnorableAlsoCheckForNonElement(child)) { continue; } // handle <set>, <remove>, <clear> tags if (child.Name == "add") { String key = HandlerBase.RemoveRequiredAttribute(child, keyAttriuteName); String value = HandlerBase.RemoveRequiredAttribute(child, valueAttributeName, true /*allowEmptyString*/); HandlerBase.CheckForUnrecognizedAttributes(child); result[key] = value; } else if (child.Name == "remove") { String key = HandlerBase.RemoveRequiredAttribute(child, keyAttriuteName); HandlerBase.CheckForUnrecognizedAttributes(child); result.Remove(key); } else if (child.Name.Equals("clear")) { HandlerBase.CheckForUnrecognizedAttributes(child); result.Clear(); } else { HandlerBase.ThrowUnrecognizedElement(child); } } result.SetReadOnly(); return(result); }
public virtual object Create(object parent, object context, XmlNode section) { Hashtable hashtable; if (parent == null) { hashtable = new Hashtable(StringComparer.OrdinalIgnoreCase); } else { hashtable = (Hashtable)((Hashtable)parent).Clone(); } HandlerBase.CheckForUnrecognizedAttributes(section); foreach (XmlNode node in section.ChildNodes) { if (!HandlerBase.IsIgnorableAlsoCheckForNonElement(node)) { if (node.Name == "add") { string str2; HandlerBase.CheckForChildNodes(node); string str = HandlerBase.RemoveRequiredAttribute(node, this.KeyAttributeName); if (this.ValueRequired) { str2 = HandlerBase.RemoveRequiredAttribute(node, this.ValueAttributeName); } else { str2 = HandlerBase.RemoveAttribute(node, this.ValueAttributeName); } HandlerBase.CheckForUnrecognizedAttributes(node); if (str2 == null) { str2 = ""; } hashtable[str] = str2; } else if (node.Name == "remove") { HandlerBase.CheckForChildNodes(node); string key = HandlerBase.RemoveRequiredAttribute(node, this.KeyAttributeName); HandlerBase.CheckForUnrecognizedAttributes(node); hashtable.Remove(key); } else if (node.Name.Equals("clear")) { HandlerBase.CheckForChildNodes(node); HandlerBase.CheckForUnrecognizedAttributes(node); hashtable.Clear(); } else { HandlerBase.ThrowUnrecognizedElement(node); } } } return(hashtable); }
internal static object CreateStatic(object parent, XmlNode section, string keyAttriuteName, string valueAttributeName) { ReadOnlyNameValueCollection values; if (parent == null) { values = new ReadOnlyNameValueCollection(StringComparer.OrdinalIgnoreCase); } else { ReadOnlyNameValueCollection values2 = (ReadOnlyNameValueCollection)parent; values = new ReadOnlyNameValueCollection(values2); } HandlerBase.CheckForUnrecognizedAttributes(section); foreach (XmlNode node in section.ChildNodes) { if (!HandlerBase.IsIgnorableAlsoCheckForNonElement(node)) { if (node.Name == "add") { string str = HandlerBase.RemoveRequiredAttribute(node, keyAttriuteName); string str2 = HandlerBase.RemoveRequiredAttribute(node, valueAttributeName, true); HandlerBase.CheckForUnrecognizedAttributes(node); values[str] = str2; } else if (node.Name == "remove") { string name = HandlerBase.RemoveRequiredAttribute(node, keyAttriuteName); HandlerBase.CheckForUnrecognizedAttributes(node); values.Remove(name); } else if (node.Name.Equals("clear")) { HandlerBase.CheckForUnrecognizedAttributes(node); values.Clear(); } else { HandlerBase.ThrowUnrecognizedElement(node); } } } values.SetReadOnly(); return(values); }
/// <devdoc> /// Given a partially composed config object (possibly null) /// and some input from the config system, return a /// further partially composed config object /// </devdoc> public virtual object Create(Object parent, Object context, XmlNode section) { Hashtable res; // start res off as a shallow clone of the parent if (parent == null) { res = new Hashtable(StringComparer.OrdinalIgnoreCase); } else { res = (Hashtable)((Hashtable)parent).Clone(); } // process XML HandlerBase.CheckForUnrecognizedAttributes(section); foreach (XmlNode child in section.ChildNodes) { // skip whitespace and comments, throws if non-element if (HandlerBase.IsIgnorableAlsoCheckForNonElement(child)) { continue; } // handle <add>, <remove>, <clear> tags if (child.Name == "add") { HandlerBase.CheckForChildNodes(child); String key = HandlerBase.RemoveRequiredAttribute(child, KeyAttributeName); String value; if (ValueRequired) { value = HandlerBase.RemoveRequiredAttribute(child, ValueAttributeName); } else { value = HandlerBase.RemoveAttribute(child, ValueAttributeName); } HandlerBase.CheckForUnrecognizedAttributes(child); if (value == null) { value = ""; } res[key] = value; } else if (child.Name == "remove") { HandlerBase.CheckForChildNodes(child); String key = HandlerBase.RemoveRequiredAttribute(child, KeyAttributeName); HandlerBase.CheckForUnrecognizedAttributes(child); res.Remove(key); } else if (child.Name.Equals("clear")) { HandlerBase.CheckForChildNodes(child); HandlerBase.CheckForUnrecognizedAttributes(child); res.Clear(); } else { HandlerBase.ThrowUnrecognizedElement(child); } } return(res); }