本文实例讲述了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++ 中二分查找递归非递归实现并分析 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,又容易写错。因为总是考虑不全边界问题。 用非递归简单分析一下,在编写过程中,如果编写的是以下的代