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;
     }
    }

  • 相关阅读:
    upstream sent unsupported FastCGI protocol version: 72 while reading response header from upstream
    当代免疫学小史-第一章(根据讲谈社Blue Backs系列2009年第一版第三次印刷版本翻译)
    微信小程序自定义tabbar解决方案(可用于解决tabbar跳转至分包页面问题)
    celery的使用
    分布式之数据库和缓存双写一致性方案解析
    opencv实战-全景图像拼接
    matplotlib+seaborn样式管理-学习整理
    matplotlib绘制3D图形
    matplotlib+seaborn图形绘制-学习整理
    opencv实战-文档扫描
  • 原文地址:https://www.cnblogs.com/toney/p/66178.html
Copyright © 2011-2022 走看看