关闭

C# 读取 XML 到TreeView

937人阅读 评论(1) 收藏 举报
 


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 == nullreturn 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;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1313次
    • 积分:20
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档
    阅读排行
    评论排行
    最新评论