首页 新闻 会员 周边 捐助

如何用c#递归生成XML文件

0
悬赏园豆:50 [已解决问题] 解决于 2008-12-24 23:25

如何用C#生成如下下表关系的XML文件,XML需以这种格式
<?xml version="1.0" encoding="utf-8" ?>
<root>
<c01 code="01" name="政治">
<c0101 code="01.01" name="国家概况">
<c01010101 code="01.01.01" name="政治体制">
<c01010102 code="01.01.01.02" name="领导体制"></c01010102>
</c01010101>
</c0101>
</c01>
<c01 code="02" name="选举制">
... ....... . . .
</c02>
</root>

问题补充: 把上面截图里的数据读出来 把关系生成在一个上面所说的XML文件
Drin Chan的主页 Drin Chan | 初学一级 | 园豆:6
提问于:2008-12-23 20:07
< >
分享
最佳答案
0

private string data2XML(DataTable treeTable)

{

StringBuilder sb = new StringBuilder();

DataRow[] rows = treeTable.Select("len(Code)=2");

foreach(DataRow dr in rows)

{

string thisCode = dr["Code"].ToString();//

sb.AppendFormat('',....);//开始标记

sb.Append(getSubNode(thisCode ,treeTable));

sb.Append('',....);//结束标记

}return sb.ToString();
}

private string getSubNode(string parentCode,DataTable treeTable)

{

StringBuilder sb = new StringBuilder();

DataRow[] rows = treeTable.Select("ParentCode='" + parentCode + "'");

foreach(DataRow dr in rows)

{

string thisCode = dr["Code"].ToString();//

sb.AppendFormat('',....);//开始标记

sb.Append(getSubNode(thisCode,treeTable));//递归在这~~

sb.Append('',....);//结束标记
}

return sb.ToString();
}

为了性能 可以用同一个StringBuilder不用每次都新建一个StringBuilder

直接在网页上敲的代码,不保证没有错误~~

BB_Coder | 小虾三级 |园豆:797 | 2008-12-24 15:28
其他回答(3)
0

你是说XML转table 还是table 转 XML?

Jackey_Chen | 园豆:255 (菜鸟二级) | 2008-12-23 20:35
0

CookComputing.XmlRpc.dll

真的很菜 | 园豆:20 (初学一级) | 2008-12-23 21:21
0

以前我也遇见到过类似的问题,要做一个 ul li 的嵌套的树型列表。

建议不要用递归的思路,不然会把你给绕死,说不定也会把计算机绕死。

其实可以用 order by code asc, 直接按顺序答应出来,然后做一些适当的 replace 就能达到你想要的树型嵌套效果

burning | 园豆:0 (初学一级) | 2008-12-24 13:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册