首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

莫不是一定要通过多次遍历,才能获得全部子节点吗?(包括子节点的子节点的子节点.所有节点)

2012-08-01 
难道一定要通过多次遍历,才能获得全部子节点吗??(包括子节点的子节点的子节点....所有节点)C# codeXmlNode

难道一定要通过多次遍历,才能获得全部子节点吗??(包括子节点的子节点的子节点....所有节点)

C# code
XmlNodeList root = eep.DocumentElement.ChildNodes;            foreach (XmlElement r in root)            {             Console.WriteLine(r.name);                  }


上面的代码只能获得XML文件的根节点下的子节点,,,问题来了,但子节点下还有子节点A,并且子节点A下还有子节点B等等(非常多节点和分支)。。。。。。请问不通过多次遍历能够取得所有单个元素吗???

[解决办法]
只能通过 递归 遍历啊
[解决办法]
深度遍历、广度遍历。通过当前节点找到下面的节点。
[解决办法]
我只知道递归遍历。。。
[解决办法]
探讨

师傅,有没有相关的类方法可以一次遍历获得吗?引用:

深度遍历、广度遍历。通过当前节点找到下面的节点。

[解决办法]
这个是在设计数据库时设计进去的。好像没有方法直接获取所有吧。
[解决办法]
C# code
 private void treeView1_MouseClick(object sender, MouseEventArgs e)        {            //获取单击的节点            TreeNode root = treeView1.GetNodeAt(new Point(e.X, e.Y));            //该节点是否被选中            bool isChecked = root.Checked;            if (root != null)            {                //该节点的选中状态影响其子孙节点的状态                FooChild(root, isChecked);                //该节点的选中状态影响其父祖节点的状态                FooParent(root);            }        }        /**方法:递归子节点跟随其全选或全不选 Modify By Wangxu 2010-2-25*/        private void FooChild(TreeNode node, bool isChecked)        {            node.Checked = isChecked;            foreach (TreeNode nd in node.Nodes)                FooChild(nd, isChecked);        }        /**方法:递归父节点跟随其全选或全不选 Add By Wangxu 2010-2-25*/        private void FooParent(TreeNode root)        {            if (root.Parent != null)            {                //兄弟节点被选的个数                int brotherNodeCheckedCount = 0;                //遍历该节点的兄弟节点                foreach (TreeNode node in root.Parent.Nodes)                {                    if (node.Checked == true)                        brotherNodeCheckedCount += 1;                }                //兄弟节点全没选                if (brotherNodeCheckedCount == 0)                {                    TreeNode parentNode = root.Parent;                    parentNode.Checked = false;//其父节点也不选                    FooParent(parentNode);                }                //兄弟节点中只要有一个被选                if (brotherNodeCheckedCount == 1)                {                    TreeNode parentNode = root.Parent;                    parentNode.Checked = true;                    FooParent(parentNode);//其父节点也被选                }            }        }
[解决办法]
没有遍历所有节点的好办法,只能递归了,递归是能够保证不管你有多少层子节点都能显示出来的
[解决办法]
我一直是用递归遍历的、
不过有人说他这不是用递归的、没去看、你可以看看
http://blog.csdn.net/xianfajushi/article/details/7756584

[解决办法]
我上面发的就是 递归的例子啊 前段时间刚刚用过的

热点排行