您的位置:首页 > 其它

递归遍历XML生成树

2008-08-05 09:53 204 查看
using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Xml;

public partial class Default_aspx

{

void Page_Load(object sender, EventArgs e)

{

string xmlstr = "<?xml version=/"1.0/"?><root><Note NodeName=/"的1/"><Note NodeName=/"的2/"><Note NodeName=/"的3/" /><Note NodeName=/"的4/" /></Note><Note NodeName=/"的5/" /></Note><Note NodeName=/"的6/"><Note NodeName=/"的7/"><Note NodeName=/"的8/" /><Note NodeName=/"的9/" /></Note><Note NodeName=/"的10/" /></Note></root>";

IterateXml(xmlstr);

}

/*

<?xml version=/"1.0/"?><root><Note NodeName=/"的1/"><Note NodeName=/"的2/"><Note NodeName=/"的3/" /><Note NodeName=/"的4/" /></Note><Note NodeName=/"的5/" /></Note><Note NodeName=/"的6/"><Note NodeName=/"的7/"><Note NodeName=/"的8/" /><Note NodeName=/"的9/" /></Note><Note NodeName=/"的10/" /></Note></root>"

*/

private void IterateXml(string xmlstr)

{

XmlDocument xmldoc = new XmlDocument();

xmldoc.LoadXml(xmlstr);

XmlNode worknode;

TreeNode rootnode;

for (int i = 0; i < xmldoc.DocumentElement.ChildNodes.Count; i++)

{

worknode = xmldoc.DocumentElement.ChildNodes[i];

if (worknode.ChildNodes.Count > 0)

rootnode = IterateChild(worknode);

else

rootnode = new TreeNode(worknode.Name);

this.TreeView1.Nodes.Add(rootnode);

}

}

private TreeNode IterateChild(XmlNode rootnode)

{

XmlNode worknode = rootnode;//当前遍历的节点

System.Web.UI.WebControls.TreeNode retnode = new TreeNode(worknode.Attributes["NodeName"].Value); ;//要返回的树节点

TreeNode newch;//中间树节点

if (worknode.ChildNodes.Count < 1)

{//没有子节点,生成一个树节点返回

newch = new TreeNode(worknode.Attributes["NodeName"].Value);

retnode = newch;

}

else //有子节点,调用递归

{

for (int i = 0; i < worknode.ChildNodes.Count; i++)

{

retnode.ChildNodes.Add(IterateChild(worknode.ChildNodes[i]));

}

}

return retnode;

}

}

======================================================

供测试XML

<?xml version = "1.0 " encoding= "utf-8 "?>
<types>
<type id= "0 " uid= "-1 " value= "我的超眩个人桌面 " />
<type id= "0.0 " uid= "0 " value= "电子邮件 " />
<type id= "0.0.1 " uid= "0.0 " value= "安徽工业大学 "/>
<type id= "0.0.2 " uid= "0.0 " value= "安徽农业大学 "/>
<type id= "0.0.3 " uid= "0.0 " value= "合肥工业大学 "/>
<type id= "0.1 " uid= "0 " value= "短消息 " />
<type id= "0.2 " uid= "0 " value= "公司通知 " />
<type id= "0.3 " uid= "0 " value= "日程安排 " />
<type id= "0.4 " uid= "0 " value= "个人考勤 " />
<type id= "0.5 " uid= "0 " value= "通讯录 " />
<type id= "0.6 " uid= "0 " value= "个人设置 " />

<type id= "1 " uid= "-1 " value= "玩转工作流程 " />
<type id= "1.0 " uid= "1 " value= "起草公文 " />
<type id= "1.1 " uid= "1 " value= "已起草的公文 " />
<type id= "1.2 " uid= "1 " value= "已提交的公文 " />
<type id= "1.3 " uid= "1 " value= "传阅公文 " />
<type id= "1.4 " uid= "1 " value= "待阅公文 " />
<type id= "1.5 " uid= "1 " value= "已审阅的公文 " />
<type id= "1.6 " uid= "1 " value= "已批的公文 " />
<type id= "1.7 " uid= "1 " value= "公文检索 " />
</types>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: