/// Constructs an XmlBase from the node if it's type is known public static XmlBase CreateXmlObjectFromNode(XmlNode node, XmlDocument document) { XmlBase result = null; System.Type nodeType = null; //Instantiate the type if it's a known type if (xmlBaseTypes.TryGetValue(node.LocalName.ToLower(), out nodeType) && nodeType != null) { if (typeof(XmlBase).IsAssignableFrom(nodeType) && !nodeType.IsAbstract) { result = System.Activator.CreateInstance(nodeType) as XmlBase; result.ConstructFromXml(node, document); } } else if (node is XmlText) { result = new XmlCodeblock(); result.ConstructFromXml(node, document); } //Return the result return(result); }