//============================================================ // <T>从文档节点中建立哈希表。</T> // // @param parent 文档元素 // @param map 文档节点哈希表 //============================================================ public static void BuildMap(FXmlNode parent, FXmlNodeMap map) { if ((parent != null) && parent.HasNode()) { foreach (FXmlNode node in parent.Nodes) { map.Set(node.Name, node); } } }
//============================================================ // <T>从文档节点中建立属性表。</T> // // @param parent 文档元素 // @param attributes 属性列表 //============================================================ public static void BuildAttributes(FXmlNode parent, FAttributes attributes) { if ((parent != null) && parent.HasNode()) { foreach (FXmlNode node in parent.Nodes) { attributes[node.Name] = node.Text; } } }
//============================================================ // <T>加载设置信息。</T> // // @param config 加载设置信息 //============================================================ public void LoadConfigNode(FXmlNode config) { if (config.HasNode()) { foreach (FXmlNode node in config.Nodes) { if (node.IsName(FXmlObjectConfig.TAG)) { FXmlObjectConfig nodeConfig = new FXmlObjectConfig(); nodeConfig.LoadConfig(node); _configs.Push(nodeConfig); } } } }
//============================================================ // <T>加载节点成为一个文档对象。</T> // // @param T 对象类型 // @param node 设置节点 // @return 文档对象 //============================================================ public T LoadNode <T>(FXmlNode node) where T : IXmlObject { FXmlObjectConfig config = _configs[node.Name]; if (null != config) { // 创建实例 T instance = config.CreateInstance <T>(); _context._parent = null; _context._config = node; instance.LoadConfig(_context); // 加载子节点 if (node.HasNode()) { LoadNodes(instance, node.Nodes); } return(instance); } return(default(T)); }