2012-12-03 53 views
1

我正在閱讀XML文件並在C#中使用我的TreeView的數據。我的程序返回一個錯誤加載XML文件返回System.StackOverflowException

類型「System.StackOverflowException」 發生在System.Windows.Forms.dll中的一個未處理的異常。

爲什麼?

XML文件

<ListOfTopics> 
    <MainTopic url="index.html" title="Homes"> 
    <SubTopic url="index.html" title="Sub Topic1"/> 
    <SubTopic url="index.html" title="Sub Topic2"/> 
    <SubTopic url="index.html" title="Sub Topic3"/> 
    </MainTopic> 
</ListOfTopics> 

C#代碼

public void LoadTopics()  
{ 
    XmlDocument xml = new XmlDocument(); 
    xml.Load("topics.xml"); 
    int i = 0; 

    foreach (XmlElement el in xml.DocumentElement.ChildNodes) 
    {   
     TreeNode node = new TreeNode(); 
     node.ToolTipText = el.GetAttribute("url"); 
     node.Name = el.GetAttribute("title"); 
     node.Text = el.GetAttribute("title"); 
     topicTree.Nodes.Add(node); 

     if (el.HasChildNodes) 
     { 
      foreach (XmlElement es in el.ChildNodes) 
      { 
       TreeNode nodes = new TreeNode(); 
       nodes.ToolTipText = es.GetAttribute("url"); 
       nodes.Name = es.GetAttribute("title"); 
       nodes.Text = es.GetAttribute("title"); 
       topicTree.Nodes[i].Nodes.Add(node); 
      } 

     } 
     i++; 
    } 
} 

回答

1

我跑你的代碼,並沒有異常,但是我發現在你的代碼中的錯誤:

topicTree.Nodes[i].Nodes.Add(node); 

您正在重新添加父節點,將其更改爲:

topicTree.Nodes[i].Nodes.Add(nodes); 
+0

噢謝謝你。我沒有注意到:)謝謝.. – Snippet