Try:private void ConstructTree(XmlNode root,TreeNode node){
foreach(XmlNode xn in root.ChildNodes){
  if(xn.NodeType == XmlNodeType.Element)
      ConstructTree(xn, node.Nodes.Add(xn.Name));
  else if(xn.NodeType == XmlNodeType.Text)
      node.Nodes.Add(xn.Value);
  }
}
Usage:private void button_Click(object sender, System.EventArgs e)
{
  
 XmlDocument doc = new XmlDocument();
 doc.Load(@"Stories.xml");
 XmlNode root = doc.DocumentElement;
 TreeNode troot = this.treeView1.Nodes.Add(root.Name);
 ConstructTree(root,troot);
}

解决方案 »

  1.   

    There are some mistakes in your xml file: <story story1>    
     <story story2>You may replace them with : <story id="story1">    
     <story id="story2">If you want to preverse those attributes,you can alter the ConsturctTree method.One possible approach is:private void ConstructTree(XmlNode root,TreeNode node){
      foreach(XmlNode xn in root.ChildNodes){
        if(xn.NodeType == XmlNodeType.Element)
        {
         TreeNode nn = node.Nodes.Add(xn.Name);
         if(xn.Attributes.Count > 0)
      foreach(XmlAttribute an in xn.Attributes)
     nn.Nodes.Add(an.Name + "=" + an.Value);
         ConstructTree(xn,nn);
        }
       else if(xn.NodeType == XmlNodeType.Text)
      node.Nodes.Add(xn.Value);
     }
    }