在家這兩天,共裝了兩遍系統(鬱悶啊。。),現在不能連adsl網路的問題終於解決了(原來是網卡驅動的問題,我暈啊)!!呵呵廢話不多說了。要想讓treeView綁定XML文檔,只需編寫一個遞迴過程就行了。XML代碼如下:
<?xml version="1.0" encoding="utf-8" ?>
<!-- 注意:treeview 為根結點,nodes 為父級節點,node 為子節點。
-->
<treeview>
<nodes>
<name>根節點1</name>
<zuozhe />
<liupai />
<link />
<node>
<name>測試節點1 -1</name>
<zuozhe />
<liupai />
</node>
<node>
<name>測試節點1 -2</name>
<zuozhe />
<liupai />
<link />
</node>
</nodes>
在頁面中加一個TreeView控制項和一個button控制項。寫一個遞迴過程如下:
/// <summary>
/// 構建樹。遍曆XML所有的節點
/// </summary>
/// <param name="XMLNodes">XML節點</param>
/// <param name="TreeNode">樹的當前節點</param>
private void BuildTree(XmlNodeList XMLNodes, TreeNodeCollection treeNodes)
{
string sValue;
for (int i = 0; i < XMLNodes.Count; i++)
{
if (XMLNodes[i].NodeType == XmlNodeType.Element)
{
TreeNode tNode = new TreeNode();
sValue = "";
if (XMLNodes[i].HasChildNodes && XMLNodes[i].ChildNodes.Count == 1 && XMLNodes[i].ChildNodes[0].NodeType == XmlNodeType.Text)
{
sValue = XMLNodes[i].ChildNodes[0].Value;
}
else
{
for (int j = 0; j < XMLNodes[i].Attributes.Count; j++)
{
sValue += XMLNodes[i].Attributes[j].Name + "=" + XMLNodes[i].Attributes[j].Value + ";";
}
}
if (sValue == "")
{
tNode.Text = XMLNodes[i].Name;
}
else
{
tNode.Text = XMLNodes[i].Name + ":" + sValue;
}
treeNodes.Add(tNode);
if(XMLNodes[i].HasChildNodes)
{
BuildTree(XMLNodes[i].ChildNodes, tNode.Nodes);
}
}
雙擊button,加入以下代碼:
private void button1_Click(object sender, EventArgs e)
{
XmlDocument doc=new XmlDocument();
doc.Load(@"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\XMLFile1.xml");
BuildTree(doc.ChildNodes, treeView1.Nodes); ||調用遞迴
}