C# · 12月 28, 2021

c#递归生成XML实例

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

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

代码如下:
复制代码 代码如下:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
//using System.Data;
using System.Data.sqlClient;

namespace WindowsApplication1
{
public partial class frmReadXML : Form
{
public frmReadXML()
{
InitializeComponent();
}
public string connstr = System.Configuration.ConfigurationManager.AppSettings[“connstr”].ToString();

private void frmReadXML_Load(object sender,EventArgs e)
{
sqlConnection conn = new sqlConnection(connstr);
conn.open();
sqlCommand comm = new sqlCommand();
comm.CommandText = “select * from Nationals”;
comm.Connection = conn;
comm.CommandType = CommandType.Text;
sqlDataAdapter sda = new sqlDataAdapter();
sda.SelectCommand = comm;
DataSet ds = new DataSet();
sda.Fill(ds);

XmlDocument doc = new XmlDocument();
doc.AppendChild(doc.CreateXmlDeclaration(“1.0″,””,””));
XmlElement rootnode = doc.CreateElement(“root”);
doc.AppendChild(rootnode);

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

}
DaTarow[] dr;

public void CreateXMLtree(DataSet ds,XmlDocument doc,string parentCode,XmlElement parentNode)
{

if (parentCode == “”)
{
dr = ds.Tables[0].Select(“parentCode=””);
}
else
{
dr = ds.Tables[0].Select(“parentCode='” + Convert.ToString(parentCode) + “‘”);
}
XmlElement tempNode;
foreach (DaTarow drv in dr)
{
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,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,tempNode);
}
}
doc.Save(AppDomain.CurrentDomain.BaseDirectory+”/xxx.xml”);

}
}
}

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