您的位置:首页 > 编程语言 > C#

C# 读取 XML 到TreeView

2007-10-07 17:29 477 查看
 






private void updateTreeView(string filename)




...{


try




...{


treeView1.Nodes.Clear();//清空treeview


XmlDocument tmpxmldoc = new XmlDocument(); //实例化XML文档


tmpxmldoc.Load(filename); //加载XML文档


FillTree(tmpxmldoc.DocumentElement, treeView1.Nodes);


//(参数1:xml的根, treeView的结点集合)                                                     


//DocumentElement:回一个在单一根文件元素中包含数据的对象 


//如果文件中不包含根节点,将传回null。 




}


catch(Exception ex)




...{


this.filename_box.Text = ex.Message;


}





private void FillTree(XmlNode node, TreeNodeCollection parentnode)




...{


if(node == null || node.NodeType == XmlNodeType.Text || node.NodeType == XmlNodeType.CDATA)//为null ,或者为内容或转义CDATA等不能有任何子结点。


return;


            


TreeNodeCollection tmptreenodecollection = AddNodeToTree(node, parentnode);


foreach(XmlNode tmpchildnode in node.ChildNodes) //递归增加现有结点的所有孩子结点。




...{


FillTree(tmpchildnode, tmptreenodecollection);


}




}


private TreeNodeCollection AddNodeToTree(XmlNode node, TreeNodeCollection parentnode)




...{


TreeNode newchildnode = CreateTreeNodeFromXmlNode(node);  //从xml节点转化成一个treeview的节点。




if(newchildnode == null) return parentnode; //如果什么都没有,返回父结点的集合




if(parentnode != null) parentnode.Add(newchildnode); //在他的父结点下增加一个新的节点




return newchildnode.Nodes;     //返回新节点的集合


}


private TreeNode CreateTreeNodeFromXmlNode(XmlNode node)




...{


TreeNode tmptreenode = new TreeNode();




if((node.HasChildNodes) && (node.FirstChild. != null)) //时候有子节点,该节点第一个自己不为NULL.




...{


tmptreenode = new TreeNode(node.Name);


TreeNode tmptreenode2 = new TreeNode(node.FirstChild.);


tmptreenode.Nodes.Add(tmptreenode2);


}


else if(node.NodeType != XmlNodeType.CDATA) 




...{


tmptreenode = new TreeNode(node.Name);


}




return tmptreenode;


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml c# null 文档 string