你需要“编号”用来做什么?
编号是为了确定节点在XML树结构中的 具体位置。
@Trey: 那你需要这个“具体位置”用来做什么?
@Launcher: 编号的信息有该节点的层级,该节点相对于同胞节点的相对位置,该节点父节点的位置。比如说根节点标记为(0,1,0),第一个0表示层级0,1表示该层排在第一个,因为其没有父节点,所以父节点位置为0;标记信息记录了每一个节点在树结构中的完整信息,讲XML映射到关系型数据库中,不会丢失其原有信息。我最终目的就是为了将XML映射到数据库中,现在是想标记每个节点的具体信息。我知道C# winform里可以添加标签控件,我想问的就是能不能在遍历到具体节点的同时添加一个标签,并标记。
@Trey: 其实我一直有个问题,因为我没看明白你这里的“标签”到底是个什么东西?是说你把 XML 文件解析后通过 TreeView 控件显示到界面上了,然后你想在 TreeView 控件上给每个节点旁边再显式一个标签控件,其中填写类似“(0,1,0)”这样的文字吗?
@Launcher: 我是想添加一个标签控件,其中显示类似(0,1,0)这样的文字。不过我是想对节点添加标签,也就是这个标签就是节点的。因为我在之后将XML映射到数据库时,标签和节点要对应的。
@Trey: 我再说一次,你把 XML 文件解析后显示到 TreeView 控件上,然后在节点处显示形如“(0,1,0)”的字符串,如图:
是这样吗?
@Launcher: 是的。这样如何实现?
@Trey: 我先问两个问题:
1、你是如何遍历 XML 文件的?
2、你会使用 TreeView 控件吗?
@Launcher: 用递归遍历的。先创建XmlDocument对象,加载XML文档,获得根节点。在利用递归,获取所有节点;
Treeview控件用过。
@Trey: 那你现在能使用你已经掌握的技术将 XML 文件各节点的内容显示到 TreeView 控件上(类似我图中的样子,不要管 Checkbox 和图标)吗? 如果能,能截图给我看看吗?
@Launcher:
private void button1_Click(object sender, EventArgs e) { XmlDocument xml = new XmlDocument(); xml.Load(@"E:\XML1.xml"); XmlElement root = xml.DocumentElement ; TreeNode treeroot = new TreeNode(root.Name); this.treeView1.Nodes.Add(treeroot); BindTreeView(root, treeroot); } private void BindTreeView(XmlNode node, TreeNode tn) { foreach (XmlNode n in node.ChildNodes) { TreeNode childnode = new TreeNode(n.Name); tn.Nodes.Add(childnode); if (n.ChildNodes.Count > 0) { BindTreeView(n, childnode); } } }
刚做的。
@Trey:
childnode.Text = string.Format("({0},{1},{2})",childnode.Level,childnode.Index,childnode.Parent.Index);
@Launcher: 谢谢。