public object Create(object parent, object configContext, XmlNode section) { ArrayList list = new ArrayList(); foreach (XmlNode node in section.ChildNodes) { if (((node.NodeType != XmlNodeType.Whitespace) && (node.NodeType != XmlNodeType.Comment)) && ((node.NodeType == XmlNodeType.Element) && node.Name.Equals("dataObjectMapping"))) { SingleTagSectionHandler handler = new SingleTagSectionHandler(); Hashtable hashtable = (Hashtable) handler.Create(null, null, node); if (hashtable != null) { string fromDataFormat = (string) hashtable["fromDataFormat"]; if ((fromDataFormat != null) && (fromDataFormat.Length != 0)) { string toDataFormat = (string) hashtable["toDataFormat"]; if ((toDataFormat != null) && (toDataFormat.Length != 0)) { string typeName = (string) hashtable["type"]; if ((typeName != null) && (typeName.Length != 0)) { list.Add(new DataObjectMappingInfo(fromDataFormat, toDataFormat, typeName)); } } } } } } return list; }
private void ParseNode( Object parent, Object context, XmlNode node, Hashtable config, String prefix ) { foreach ( XmlNode item in node.ChildNodes ) { if ( item.NodeType.Equals(XmlNodeType.Element) ) { String sectionname = String.Concat(prefix, "/", item.Name);; switch ( item.Name ) { case "general": case "login": case "message": case "inbox": SingleTagSectionHandler singlesection = new SingleTagSectionHandler(); InitConfigSection(config, sectionname, singlesection.Create(parent, context, item) as System.Collections.Hashtable); break; case "read": case "send": if ( item.HasChildNodes ) ParseNode( parent, context, item, config, sectionname ); break; case "servers": if ( item.HasChildNodes ) config.Add(sectionname, ParseConfigServers(item.ChildNodes)); break; case "addressbook": if ( !config.Contains(sectionname) ) config.Add(sectionname, new SortedList()); SortedList addressbooks = (SortedList)config[sectionname]; Hashtable tmpaddressbook = (Hashtable)(new System.Configuration.SingleTagSectionHandler()).Create(parent, context, item); ListDictionary addressbook = new ListDictionary(new System.Collections.CaseInsensitiveComparer()); foreach ( String configitem in tmpaddressbook.Keys) { addressbook.Add(configitem, tmpaddressbook[configitem]); } tmpaddressbook = null; if ( addressbook.Contains("type") && !addressbook["type"].Equals("none") && addressbook.Contains("name") && !addressbooks.Contains(addressbook["name"]) ) { if ( addressbook.Contains("pagesize") ) addressbook["pagesize"] = ParseConfigElement(addressbook["pagesize"].ToString(), 10); else addressbook["pagesize"] = 10; addressbooks.Add(addressbook["name"], addressbook); if ( addressbook.Contains("allowupdate") ) addressbook["allowupdate"] = ParseConfigElement(addressbook["allowupdate"].ToString(), false); else addressbook["allowupdate"] = false; } break; } } } }