利用TreeView控件动态生成无限级树(续:通过绑定动态xml文件)

本文介绍了利用Java动态生成XML文件的方法。将生成XML文件的代码放在GetXml.aspx页中,通过递归函数创建XML文档,使用XmlTextWriter将其写入Xml流并输出。最后在PageLoad函数里调用SendXml()方法即可得到该XML文件。
在上一篇 利用TreeView控件动态生成无限级树
中提到的那个动态生成XML文件进行绑定的办法
今天也被我实现了
把生成XML文件的代码单独放到一个页面中,比如说叫GetXml.aspx页中去
然后指定
TreeView2.TreeNodeSrc  =   " GetXml.aspx " ;

而这个GetXml.aspx.cs中的代码如下
private   void  SendXml()
        
{
            
//Create Xml File
            XmlDocument objXmlDoc = new XmlDocument();
            
//Insert Xml Declaration
            XmlDeclaration objXmlDeclare = objXmlDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
            objXmlDoc.InsertBefore(objXmlDeclare, objXmlDoc.DocumentElement);
            XmlElement objRootElem 
= objXmlDoc.CreateElement("TREENODES");
            objXmlDoc.AppendChild(objRootElem);
            CreateXml(objXmlDoc, objRootElem, 
0);
            System.Xml.XmlTextWriter xmlwriter 
= new System.Xml.XmlTextWriter(Response.OutputStream,Response.ContentEncoding);
            xmlwriter.Formatting 
= Formatting.Indented;
            xmlwriter.Indentation 
= 4;
            xmlwriter.IndentChar 
= ' ';
            objXmlDoc.WriteTo(xmlwriter);
            xmlwriter.Flush();
            Response.End();
            xmlwriter.Close();
        }
        
private   void  CreateXml(XmlDocument objXMLDoc, XmlElement objRootElem,  int  belong)
        
{
            
//Get DataSet
            DataSet ds = new DataSet();
            
foreach(DataRow dr in ds.Tables[0].Rows)
            
{
                
//Create ChildNode TreeNode
                XmlElement objXmlElem = objXMLDoc.CreateElement("TREENODE");
                objRootElem.AppendChild(objXmlElem);
                
//Create Attributes Text
                XmlAttribute objXmlAttText = objXMLDoc.CreateAttribute("Text");
                objXmlAttText.Value 
= dr["text"].ToString().Trim();
                objXmlElem.SetAttributeNode(objXmlAttText);
                
//Create Attributes CheckBox
                XmlAttribute objXmlAttCB = objXMLDoc.CreateAttribute("CheckBox");
                objXmlAttCB.Value 
= "True";
                objXmlElem.SetAttributeNode(objXmlAttCB);
                
//Create Attributes Expanded
                XmlAttribute objXmlAttExp = objXMLDoc.CreateAttribute("Expanded");
                objXmlAttExp.Value 
= "True";
                objXmlElem.SetAttributeNode(objXmlAttExp);
                
int id = int.Parse(dr["id"].ToString().Trim());
                CreateXml(objXMLDoc, objXmlElem, id);
            }
        }

函数的递归思想用的仍然是上一篇中的同样的思想
这里把生成的objXMLdoc文件用XmlTextWriter写入到一个Xml流中
然后利用xmlwriter.Flush()的方式进行输出
这样就可以得到这个Xml文件了
在PageLoad函数里调用这个SendXml()方法即可
private   void  Page_Load( object  sender, System.EventArgs e)
        
{
            BindXmlTree();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值