zl程序教程

您现在的位置是:首页 >  后端

当前栏目

c#递归生成XML实例

2023-06-13 09:15:31 时间

本文实例讲述了c#递归生成XML的方法。分享给大家供大家参考。具体实现方法如下:

这里结合网上搜到的资料,写了个递归生成xml,经过调试可以使用,数据库结构如下图所示:

代码如下:

复制代码代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Xml;
//usingSystem.Data;
usingSystem.Data.SqlClient;

namespaceWindowsApplication1
{
   publicpartialclassfrmReadXML:Form
   {
       publicfrmReadXML()
       {
           InitializeComponent();
       }
       publicstringconnstr=System.Configuration.ConfigurationManager.AppSettings["connstr"].ToString();
      
       privatevoidfrmReadXML_Load(objectsender,EventArgse)
       {
           SqlConnectionconn=newSqlConnection(connstr);
           conn.Open();
           SqlCommandcomm=newSqlCommand();
           comm.CommandText="select*fromNationals";
           comm.Connection=conn;
           comm.CommandType=CommandType.Text;
           SqlDataAdaptersda=newSqlDataAdapter();
           sda.SelectCommand=comm;
           DataSetds=newDataSet();
           sda.Fill(ds);

           XmlDocumentdoc=newXmlDocument();
           doc.AppendChild(doc.CreateXmlDeclaration("1.0","",""));
           XmlElementrootnode=doc.CreateElement("root");
           doc.AppendChild(rootnode);

           CreateXMLtree(ds,doc,"",(XmlElement)null);

       }
       DataRow[]dr;
       
       publicvoidCreateXMLtree(DataSetds,XmlDocumentdoc,stringparentCode,XmlElementparentNode)
       {

           if(parentCode=="")
           {
                dr=ds.Tables[0].Select("parentCode=""");
           }
           else
           {
               dr=ds.Tables[0].Select("parentCode=""+Convert.ToString(parentCode)+""");
           }
           XmlElementtempNode;
           foreach(DataRowdrvindr)
           {
               if(parentCode=="")
               {
                   tempNode=doc.CreateElement("c"+drv["Code"].ToString());//创建一级节点
                   tempNode.SetAttribute("name",drv["name"].ToString());//创建属性
                   //tempNode.InnerText=drv["name"].ToString();
                   doc.DocumentElement.AppendChild(tempNode);//添加一级节点
                   CreateXMLtree(ds,doc,drv["Code"].ToString(),tempNode);
               }
               else
               {
                   tempNode=doc.CreateElement("c"+drv["Code"].ToString().Replace(".",""));
                   tempNode.SetAttribute("name",drv["name"].ToString());
                   //tempNode.InnerText=drv["name"].ToString();
                   parentNode.AppendChild(tempNode);
                   CreateXMLtree(ds,doc,drv["Code"].ToString(),tempNode);
               }
           }
           doc.Save(AppDomain.CurrentDomain.BaseDirectory+"/xxx.xml");
           
       }
   }
}

希望本文所述对大家的C#程序设计有所帮助。