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

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

C# 读取 XML 到TreeView

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭