xml2menu

代码
xml2treeviewmenu
新建menu.xml文件,如下:
<?xml version="1.0" encoding="utf-8" ?>
<root>
    
<folder title='folder 1a' >
        
<record title='record 1a1' />
        
<record title='record 1a2' />
        
<folder title='folder 1b'>
            
<record title='record 1b1' />
        
</folder>
    
</folder>
    
<folder title='folder 2a' >
        
<record title='record 2a1' />
    
</folder>
    
<folder title='folder 3a' >
        
<record title='record 3a1' />
        
<record title='record 3a2' />
    
</folder>
</root>
把TreeView控件命名为:treeViewMenu
在后台添加命名空间
using System.Xml;
using System.Xml.XPath;
private XmlDocument docXML = new XmlDocument();
docXML.Load(
"menu.xml");
populateBaseNodes();
private void populateBaseNodes()
{
    treeViewMenu.Nodes.Clear();
    treeViewMenu.BeginUpdate();
    TreeNode treenode;
    treenod 
= treeViewMenu.Nodes.Add("Folders");
    
    XmlNodeList baseNodeList 
= docXML.SelectNodes("root\folder");
    
    
foreach(XmlNodeList xmlnode in baseNodeList)
    {
        
string title = xmlnode.Attribute["title"].value;
        treenode 
= treeviewMenu.Nodes.Add(title);
        populateChildNodes(xmlnode, treenode);
//子节点
    }
    treeviewMenu.EndUpdate();
    treeviewMenu.Refresh();
}

private void populateChildNodes(xmlNode oldXmlnode, TreeNode oldTreenode)
{
    TreeNode treenode 
= null;
    XmlNodeList childNodeList 
= oldXmlnode.ChildNodes;
    
    
foreach(xmlNode xmlnode in childNodeList)
    {
        
string title = xmlnode.Attribute["title"].Value;
        treenode 
= oldTreenode.Nodes.Add(title);
        populateChildNodes(xmlnode, treenode);
    }
}


posted @ 2009-12-29 16:36  smodi  阅读(138)  评论(0编辑  收藏  举报