zoukankan      html  css  js  c++  java
  • 递归遍历XML生成树

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Xml;
    public partial class Default_aspx
    {
     void Page_Load(object sender, EventArgs e)
     {

      string xmlstr = "<?xml version=\"1.0\"?><root><Note NodeName=\"的1\"><Note NodeName=\"的2\"><Note NodeName=\"的3\" /><Note NodeName=\"的4\" /></Note><Note NodeName=\"的5\" /></Note><Note NodeName=\"的6\"><Note NodeName=\"的7\"><Note NodeName=\"的8\" /><Note NodeName=\"的9\" /></Note><Note NodeName=\"的10\" /></Note></root>";
      IterateXml(xmlstr);
     }
    /*
     <?xml version=\"1.0\"?><root><Note NodeName=\"的1\"><Note NodeName=\"的2\"><Note NodeName=\"的3\" /><Note NodeName=\"的4\" /></Note><Note NodeName=\"的5\" /></Note><Note NodeName=\"的6\"><Note NodeName=\"的7\"><Note NodeName=\"的8\" /><Note NodeName=\"的9\" /></Note><Note NodeName=\"的10\" /></Note></root>"
     */
     private void IterateXml(string xmlstr)
     {
      XmlDocument xmldoc = new XmlDocument();

      xmldoc.LoadXml(xmlstr);
      XmlNode worknode;
      TreeNode rootnode;
      for (int i = 0; i < xmldoc.DocumentElement.ChildNodes.Count; i++)
      {
       worknode = xmldoc.DocumentElement.ChildNodes[i];
       if (worknode.ChildNodes.Count > 0)
        rootnode = IterateChild(worknode);
       else
        rootnode = new TreeNode(worknode.Name);
       this.TreeView1.Nodes.Add(rootnode);   
      }
     }
     private TreeNode  IterateChild(XmlNode rootnode)
     {
      XmlNode worknode = rootnode;//当前遍历的节点

      System.Web.UI.WebControls.TreeNode retnode = new TreeNode(worknode.Attributes["NodeName"].Value); ;//要返回的树节点
      TreeNode newch;//中间树节点

      if (worknode.ChildNodes.Count < 1)
      {//没有子节点,生成一个树节点返回
       newch = new TreeNode(worknode.Attributes["NodeName"].Value);
       retnode = newch;
      }
      else //有子节点,调用递归
      {
       for (int i = 0; i < worknode.ChildNodes.Count; i++)
       {
        retnode.ChildNodes.Add(IterateChild(worknode.ChildNodes[i]));
       }
      }

      return retnode;
     }
    }

  • 相关阅读:
    js幻灯片效果!
    构造函数和析构函数的简单说明
    ASP.NET接口的基础使用例子
    带预览图的js切换效果!
    在win7系统中安装sqlserver2005出现 [Microsoft][SQL Native Client]客户端不支持加密问题!
    Win7开启无线共享上网的方法
    C# 结构体 简明介绍
    C#访问修饰符简单说明
    C#不定长参数的使用
    研究了一下Google Ajax Search API, 给博客做了个样品
  • 原文地址:https://www.cnblogs.com/toney/p/66178.html
Copyright © 2011-2022 走看看