C# 读取 XML 到TreeView

 


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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值