//============================================================ // <T>构造文档。</T> // // @param assembly 模块对象 // @param name 资源名称 //============================================================ protected void InnerConstruct() { // 构造根节点 _root = new FXmlNode(RXml.ROOT_NAME); _root._document = this; // 构造根元素 _element = new FXmlElement(); _element._document = this; _element.Push(_root); }
//============================================================ // <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 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 config 设置信息 //============================================================ public void LoadConfig(FXmlNode config) { // 获得名称 _name = config[PTY_NAME]; RString.CheckEmpty(_name, "name"); // 获得类型 _typeName = config[PTY_TYPE]; RString.CheckEmpty(_typeName, "type"); // 获得类对象 _type = RClass.Find(_typeName); }
public void LoadConfig(FXmlNode config) { if (config != null) { FXmlNode headsNode = config.Find(FCsvHeads.TAG_NAME); if (headsNode != null) { _heads.LoadConfig(headsNode); } } }
//============================================================ // <T>在当前节点下,查找指定节点名称的节点内容。</T> // // @param name 节点名称 // @param args 属性列表 // @return 节点内容 //============================================================ public string FindText(string name, params string[] args) { if (null != _nodes) { FXmlNode node = _nodes.Find(name, args); if (null != node) { return(node.Text); } } return(null); }
//============================================================ // <T>从文档节点中建立哈希表。</T> // // @param parent 文档元素 // @param map 文档节点哈希表 // @param name 节点名称 // @param attrName 属性名称 //============================================================ public static void BuildMap(FXmlNode parent, FXmlNodeMap map, string name, string attrName) { if (parent != null && parent.Nodes != null) { foreach (FXmlNode node in parent.Nodes) { if (node.IsName(name)) { map.Set(node.Get(attrName), node); } } } }
//============================================================ // <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 name 节点名称 // @return 节点对象 //============================================================ public virtual FXmlNode CreateNode(string name) { FXmlNode node = null; if (_document == null) { node = new FXmlNode(name); } else { node = _document.NodeFactory.CreateNode(name, null); } Elements.Push(node); return(node); }
//public FCsvValidators Validators { // get { return _validators; } //} public void LoadConfig(FXmlNode config) { /*_config = config; * // Load values * if (config.Contains(PTY_ID)) { * _id = config.GetInteger(PTY_ID); * } * if (config.Contains(PTY_TYPE)) { * _type = config[PTY_TYPE]; * } * if (config.Contains(PTY_NAME)) { * _name = config[PTY_NAME]; * } * if (config.Contains(PTY_SIZE)) { * _size = config.GetInteger(PTY_SIZE); * } * if (config.Contains(PTY_DESCRIPTION)) { * _description = config[PTY_DESCRIPTION]; * } * _key = config.GetBoolean(PTY_KEY); * // Load children * if (config.HasNode) { * if (config.ContainsNode(FCsvValidator.TAG)) { * _validators = new FCsvValidators(); * } * foreach (FXmlNode node in config.Nodes) { * if (node.IsName(FCsvValidator.TAG)) { * // Load Validator * FCsvValidator validator = new FCsvValidator(); * validator.LoadConfig(node); * _validators.Push(validator); * } else if (node.IsName(FCsvFormator.TAG)) { * // Formator * FCsvFormator formator = new FCsvFormator(); * formator.LoadConfig(node); * if (formator.Type == ECsvWorkType.Read) { * _readFormator = formator; * } else if (formator.Type == ECsvWorkType.Write) { * _writeFormator = formator; * } * } * } * } * // Dump * if (_logger.DebugAble) { * _logger.Debug(this, "LoadConfig", "Load head {0}", Dump()); * }*/ }
public void LoadConfig(FXmlNode config) { _config = config; // get type string type = config[PTY_TYPE]; _type = (ECsvWorkType)REnum.ToValue(typeof(ECsvWorkType), type); // get validator string formator = config[PTY_CLASS]; try { //_formator = (IFormator)RClass.CreateInstance(formator); } catch (Exception e) { throw new FFatalException(e, "Create formator class failure. (class={0})", formator); } }
//============================================================ // <T>保存对象为节点。</T> // // @param parent 父对象 // @param node 设置节点 //============================================================ protected virtual void SaveNodes(IXmlObject parent, FXmlNode node) { /*if (null != parent.Children) { * foreach (IXmlObject child in parent.Children) { * FXmlObjectConfig config = _configs.FindByType(child); * FXmlNode childNode = node.CreateNode(config.Name); * // Instance * _context._parent = parent; * _context._config = childNode; * child.SaveConfig(_context); * // Children * if (child.Children != null) { * SaveNodes(child, childNode); * } * } * }*/ }
//============================================================ // <T>查找所有子节点。</T> // // @param nodes 子节点列表 // @param node 子节点 // @param name 节点名称 // @param args 属性列表 //============================================================ protected void InnerFindAllNodes(FXmlNodes nodes, FXmlNode node, string name, params string[] args) { foreach (FXmlNode child in node.Nodes) { if (null != child) { if (child.Equals(name, args)) { nodes.Push(child); } if (child.HasNode()) { InnerFindAllNodes(nodes, child, name, args); } } } }
//============================================================ // <T>获得调试转储信息。</T> // // @param info 转储信息 // @return 转储信息 //============================================================ public override FDumpInfo Dump(FDumpInfo info) { RDump.StartDump(info); FXmlNode parent = (FXmlNode)info.Instance; // 转存名称 info.Append(parent.Name); // 转存属性列表 if (parent.HasAttribute()) { info.Append(" ["); foreach (IPair <string, string> pair in parent.Attributes) { if (!pair.IsFirst()) { info.Append(", "); } info.Append(pair.Name, "=", pair.Value); } info.Append("]"); } // 转存内容 if (parent.HasText()) { info.Append("{"); info.Append(parent.Text); info.Append("}"); } // 转存元素列表 if (parent.HasElement()) { info.AppendLine(); foreach (FXmlElement element in parent.Elements) { info.IncreaseDeep(element); Dump(info); info.DecreaseDeep(); } } return(info); }
//============================================================ // <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)); }
public void LoadConfig(FXmlNode config) { Clear(); FXmlNodes nodes = config.Nodes; if (nodes != null) { foreach (FXmlNode node in nodes) { if (node.IsName(FCsvHead.HEAD_TYPE)) { FCsvHead head = new FCsvHead(); head.LoadConfig(node); Set(head.Name, head); } } } // Dump if (_logger.DebugAble) { _logger.Debug(this, "LoadConfig", "Load all heads (count={0})", Count); } }
//============================================================ // <T>加载文档。</T> // // @param xdoc 文档对象 //============================================================ public void LoadDocument(XmlDocument xdoc) { _element.Clear(); RXml.SyncNodeFromElements(_element, xdoc.ChildNodes); _root = RXml.FindNode(_element.Elements); }
//============================================================ // <T>加载设置信息。</T> // // @param xconfig 设置节点 //============================================================ public virtual void LoadConfig(FXmlNode xconfig) { }
//============================================================ // <T>保存设置信息。<T> // // @param xconfig 设置节点 //============================================================ public virtual void SaveConfig(FXmlNode xconfig) { }