Exemple #1
0
 //============================================================
 // <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);
 }
Exemple #2
0
 //============================================================
 // <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;
         }
     }
 }
Exemple #3
0
 //============================================================
 // <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);
         }
     }
 }
Exemple #4
0
 //============================================================
 // <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);
 }
Exemple #5
0
 public void LoadConfig(FXmlNode config)
 {
     if (config != null)
     {
         FXmlNode headsNode = config.Find(FCsvHeads.TAG_NAME);
         if (headsNode != null)
         {
             _heads.LoadConfig(headsNode);
         }
     }
 }
Exemple #6
0
 //============================================================
 // <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);
 }
Exemple #7
0
 //============================================================
 // <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);
             }
         }
     }
 }
Exemple #8
0
 //============================================================
 // <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);
             }
         }
     }
 }
Exemple #9
0
        //============================================================
        // <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);
        }
Exemple #10
0
        //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());
             * }*/
        }
Exemple #11
0
        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);
            }
        }
Exemple #12
0
 //============================================================
 // <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);
      *    }
      * }
      * }*/
 }
Exemple #13
0
 //============================================================
 // <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);
             }
         }
     }
 }
Exemple #14
0
        //============================================================
        // <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);
        }
Exemple #15
0
        //============================================================
        // <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));
        }
Exemple #16
0
        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);
            }
        }
Exemple #17
0
 //============================================================
 // <T>加载文档。</T>
 //
 // @param xdoc 文档对象
 //============================================================
 public void LoadDocument(XmlDocument xdoc)
 {
     _element.Clear();
     RXml.SyncNodeFromElements(_element, xdoc.ChildNodes);
     _root = RXml.FindNode(_element.Elements);
 }
Exemple #18
0
 //============================================================
 // <T>加载设置信息。</T>
 //
 // @param xconfig 设置节点
 //============================================================
 public virtual void LoadConfig(FXmlNode xconfig)
 {
 }
Exemple #19
0
 //============================================================
 // <T>保存设置信息。<T>
 //
 // @param xconfig 设置节点
 //============================================================
 public virtual void SaveConfig(FXmlNode xconfig)
 {
 }