当前位置: 首页 > 编程笔记 >

c#递归生成XML实例

熊烨
2023-03-14
本文向大家介绍c#递归生成XML实例,包括了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,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#程序设计有所帮助。

 类似资料:
  • 问题内容: 我天真地尝试创建一个递归生成器。没用 这是我所做的: 我所得到的只是第一项。 有没有办法使这种代码起作用?本质上是在递归方案中将命令转移到以上级别吗? 问题答案: 尝试这个: 我应该指出,由于您的功能存在错误,因此无法使用。它可能应该包含不为空的支票,如下所示:

  • 给定目标金额和硬币面额列表,我的代码应该找到达到目标金额所需的最少硬币。 示例: > 我们可以从3x253x1做78,所以需要6个硬币 48=2x24,因此2枚硬币就足够了 我们可以从2x161x3中得到35,所以3个硬币就足够了 我用for循环编写了代码,但如何使其递归?

  • 我在研究javascript生成器,发现这个实现使用递归函数模拟异步等待的效果。我想知道我们是否可以实现类似但非递归的东西?我思考了很长时间,但没有找到有效的解决方案。

  • 问题内容: 我想知道是否有一种方法可以在我拥有数据和标签的情况下自动从XSD架构生成XML文件。我想在python / java中做到这一点。似乎很有可能,但是我找不到任何允许我执行此操作的库。我正在寻找一个相当快速的解决方案。 问题答案: 查看适用于与JAXB相似的Python工具的pyXSD。 XSD用于创建Python类。Python对象用于发出XML。

  • 问题内容: 我需要从程序中的.als生成随机的.xml实例。我设法通过在后台(不可见的JFrame)中运行Alloy并调用doOpen,doExecuteLatest和doShowLatest函数来做到这一点。但是每次我运行代码时都必须等待合金启动,这很痛苦。我认为,如果我只使用执行此过程的Alloy代码段(我想那将是kodkod)会更有效。有谁知道这是怎么做到的吗?我发现Alloy的代码非常混乱

  • 本文向大家介绍C++ 中二分查找递归非递归实现并分析,包括了C++ 中二分查找递归非递归实现并分析的使用技巧和注意事项,需要的朋友参考一下 C++ 中二分查找递归非递归实现并分析 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,又容易写错。因为总是考虑不全边界问题。 用非递归简单分析一下,在编写过程中,如果编写的是以下的代