//============================================================ // <T>获得所有子节点。</T> // // @param name 节点名称 // @param args 属性列表 // @return 子节点列表 //============================================================ public FXmlNodes AllNodes(string name, params string[] args) { FXmlNodes nodes = new FXmlNodes(); if (HasNode()) { InnerFindAllNodes(nodes, this, name, args); } return(nodes); }
//============================================================ // <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 path 路径 // @param args 属性列表 // @return 节点对象 //============================================================ public FXmlNode FindPath(string path, params string[] args) { FXmlNode find = null; FXmlNodes parent = this; foreach (string name in path.Split('.')) { foreach (FXmlNode node in parent) { if (node.Equals(name, args)) { find = node; break; } } if ((null != find) && find.HasNode()) { parent = find.Nodes; } } return(find); }