asp.net2.0 利用Dataset,从数据库导出并生成无限级类别的XML文件

数据表结构如下:

ID:自增标识ID,
ParentID:父级ID,
ClassName:类别名称

CS代码如下:

  public  DataSet ds  =   new  DataSet();
    
public  DataTable dt;
    XmlDocument xmlDoc 
=   new  XmlDocument();

    
protected   void  Page_Load( object  sender, EventArgs e)
    
{
        SqlConnection con 
= new SqlConnection("Data Source=HN;Initial Catalog=yiming;User ID=sa;Password=sa"); 

        SqlDataAdapter ad 
= new SqlDataAdapter("select * from class", con);
        ad.Fill(ds, 
"class");
        dt 
= ds.Tables["class"];
      
        xmlDoc.Load(Server.MapPath(
"~/xml.xml"));
        XmlNode root 
= xmlDoc.SelectSingleNode("Root"); //查找<rootTreenode>
        
//删除初根节点外的所有节点。
        root.RemoveAll();

        DataRow[] drs 
= dt.Select("parentID=0");
        
foreach (DataRow r in drs)
        
{
            XmlElement treenode1 
= (XmlElement)root;

            treenode1.SetAttribute(
"Node_ID", r["ID"].ToString());
            treenode1.SetAttribute(
"Father_ID", r["parentid"].ToString());
            treenode1.SetAttribute(
"NodeName", r["classname"].ToString());

            NodeEach(r[
"id"].ToString(), treenode1);
        }

        xmlDoc.Save(Server.MapPath(
"~/xml.xml"));

        Response.Write(count.ToString());
    }


    
public   void  NodeEach( string  id, XmlNode treenode)
    
{
        DataRow[] drs 
= dt.Select("parentID=" + id);
        
foreach (DataRow r in drs)
        
{
            XmlElement treenode2 
= xmlDoc.CreateElement("treenode"); //创建一个<treenode>节点
            treenode2.SetAttribute("Node_ID", r["ID"].ToString());
            treenode2.SetAttribute(
"Father_ID", r["parentid"].ToString());
            treenode2.SetAttribute(
"NodeName", r["classname"].ToString());
            treenode.AppendChild(treenode2);

            NodeEach(r[
"id"].ToString(), treenode2);
        }


    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值