Пример #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);
 }
Пример #2
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);
         }
     }
 }
Пример #3
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;
         }
     }
 }
Пример #4
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);
 }
Пример #5
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);
             }
         }
     }
 }
Пример #6
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);
        }
Пример #7
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);
             }
         }
     }
 }
Пример #8
0
        //============================================================
        // <T>获得调试转储信息。</T>
        //
        // @param info 转储信息
        // @return 转储信息
        //============================================================
        public override FDump Dump(FDump 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);
        }
Пример #9
0
 //============================================================
 // <T>加载文档。</T>
 //
 // @param xdoc 文档对象
 //============================================================
 public void LoadDocument(XmlDocument xdoc)
 {
     _element.Clear();
     RXml.SyncNodeFromElements(_element, xdoc.ChildNodes);
     _root = RXml.FindNode(_element.Elements);
 }