加载XML文件将返回System.StackOverflowException

时间:2012-12-03 04:21:57

标签: c# xml

我正在阅读一个XML文件,并在C#中使用我TreeView的数据。我的程序返回错误

  

类型'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 个答案:

答案 0 :(得分:1)

我运行了你的代码但没有异常,但我确实在你的代码中发现了一个错误:

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

您正在重新添加父节点,请将其更改为:

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