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

  • 相关阅读:
    Vue自定义过滤器
    Vue自带的过滤器
    vue单页面程序
    Angular 通过 $http.post 写入本地 JSON 文件
    Windows下搭建PHP开发环境
    在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程
    jQuery编程的最佳实践
    微信小程序 TLS 版本必须大于等于1.2问题解决
    linux批量压缩当前目录中文件后,删除原文件
    docker 删除镜像
  • 原文地址:https://www.cnblogs.com/toney/p/66178.html
Copyright © 2011-2022 走看看