c#递归生成XML实例
本文实例讲述了c#递归生成XML的方法。分享给大家供大家参考。具体实现方法如下:
这里结合网上搜到的资料,写了个递归生成xml,经过调试可以使用,数据库结构如下图所示:
代码如下:
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#程序设计有所帮助。
相关文章
- C# Dictionary通过Value找Key[通俗易懂]
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- 【100个 Unity实用技能】| C# 检查字典中是否存在某个Key的几种方法
- c#Base关键字的使用
- C#调用存储过程简单完整的实例代码
- c#汉诺塔的递归算法与解析
- C#zxing二维码写入的实例代码
- C#委托(跨窗体操作控件)实例流程讲解
- C#StringReplace高效的实例方法
- C#基础:Dispose()、Close()、Finalize()的区别详解
- C#中通过API实现的打印类实例代码
- C#中使用反射获取结构体实例及思路
- c#剪切板操作的简单实例
- C#实现上传照片到物理路径,并且将地址保存到数据库的小例子
- c#反射机制学习和利用反射获取类型信息
- c#读写注册表示例分享
- c#利用system.net发送html格式邮件
- C#中if语句使用概述
- C#实现GZip压缩和解压缩入门实例
- C#把数字转换成大写金额的代码实例
- 浅谈C#设计模式之开放封闭原则
- C#实现窗体间传递数据实例
- C#枚举类型与结构类型实例解析
- C#函数式编程中的递归调用之尾递归详解