本人想实现一个读写xml文件的windows程序,可是不晓得怎样才能动态增加xml文件的节点到Treeview中,下面是我写了开头的东东,有没有高手指点一下啊,初学.net,还望多多指教!窗体上只放了一个TreeView控件和三个Button

private void bOpen_Click(object sender, System.EventArgs e)
{
openFile();

}
private void bSave_Click(object sender, System.EventArgs e)
{

}
private void bExit_Click(object sender, System.EventArgs e)
{
this.Close();
}
public void openFile()
{
OpenFileDialog openFileDg = new OpenFileDialog();
openFileDg.Filter = "XML Files(*.xml)|*.xml|Config Files(*.config)|*.config";
openFileDg.FilterIndex = 1;
openFileDg.Multiselect = false;
if(openFileDg.ShowDialog() == DialogResult.OK)
{
FilePath.Text = openFileDg.FileName;//显示文件路径 
FileInfo fi = new FileInfo(openFileDg.FileName);//显示文件最后修改时间
LastModifiedTime.Text = fi.LastWriteTime.ToString();
}
XmlDocument doc = new XmlDocument();
doc.Load(openFileDg.FileName);
if(doc.NodeType == XmlNodeType.Element)
{ }

}

解决方案 »

  1.   

    这个,这个,我这里有例子代码,不过是POCKET PC 的,而且,公司里也有规定,源代码不能以任何方式发布到公司外部。
      

  2.   

    在MSDN中
    HOW TO: Populate a TreeView Control with XML Data in Visual C# .NET
    HOW TO: Populate a TreeView Control with XML Data in Visual Basic .NET
      

  3.   

    #region //保存编辑过的TreeView项
    if ( this.treeViewNavigator.Focused )
    {
    //修改后的标题显示
    treeViewNavigator.SelectedNode.Text = Pub.NavEdtTitle ;

    //保存到Navigator.xml
    XmlDocument doc = new XmlDocument();
    doc.Load(Pub.XMLNavigator);

    string XPath = "//Navigator[@ID=\"" + Pub.NavEdtTag + "\"]" ;
    XmlNode xNode = doc.DocumentElement.SelectSingleNode(XPath) ; //保存或删除语音文件
    if ( File.Exists(Pub.TempWAV) )
    {
    djcvt.WavetoPcm(Pub.TempWAV, Pub.VOCPathNavigator + "\\" + xNode.Attributes["ID"].Value + ".pcm") ;
    File.Delete(Pub.TempWAV) ;
    }
    else
    {
    string FileToDelete = Pub.VOCPathNavigator + "\\" + xNode.Attributes["ID"].Value + ".pcm" ;
    if ( File.Exists(FileToDelete) ) File.Delete(FileToDelete) ;
    } xNode.Attributes["Title"].Value = Pub.NavEdtTitle ;
    xNode.Attributes["Re"].Value = Pub.NavEdtRe ; doc.Save(Pub.XMLNavigator) ;

    this.SetNavigatorToolBarButtonAfterSelectTree() ;
    }
    #endregion
      

  4.   

    发帖不能超过三次, ZhouQiang() 换一个帐号#region //从Navigator.xml文件装入导航树
    private void LoadNavigatorTreeFromXml()
    {
    try 
    {
    XmlDocument dom = new XmlDocument() ;
    dom.Load(Pub.XMLNavigator) ;
    treeViewNavigator.Nodes.Clear() ;
    AddTreeNode(dom.DocumentElement, null); 
    }
    catch(XmlException xmlEx)
    {
    MessageBox.Show(xmlEx.Message) ;
    }
    catch(Exception Ex)
    {
    MessageBox.Show(Ex.Message) ;
    }

    }
    #endregion #region //从Navigator.xml文件装入导航叶
    private void LoadNavigatorLeafFromXml()
    {
    this.listViewNavigator.Items.Clear() ; XmlDocument doc = new XmlDocument();
    doc.Load(Pub.XMLNavigator);

    string ID = this.treeViewNavigator.SelectedNode.Tag.ToString() ;
    string XPath = "//Navigator[@ID=\"" + ID + "\"]/child::Navigator[@Type=\"Leaf\"]" ; XmlNodeList xNodeList = doc.DocumentElement.SelectNodes(XPath) ;

    for ( int i = 0; i < xNodeList.Count; i++ )
    {
    this.listViewNavigator.Items.Add(xNodeList[i].Attributes["Title"].Value) ;
    this.listViewNavigator.Items[listViewNavigator.Items.Count - 1].Tag = xNodeList[i].Attributes["ID"].Value ;
    }

    this.SetNavigatorToolBarButtonAfterSelectTree() ;
    }
    #endregion

    #region //处理导航树节点
    private TreeNode ProcessTreeNode(XmlNode xNode, TreeNodeCollection tCol)
    {
    //装入导航树节点标题
    TreeNode tNode = new TreeNode() ;
    tNode = tCol.Add(xNode.Attributes["Title"].Value) ; //记录导航树节点ID值
    tNode.Tag = xNode.Attributes["ID"].Value ;

    //装入导航数节点图标
    if ( tNode.Parent == null ) //根节点
    {
    tNode.ImageIndex = 0 ;
    tNode.SelectedImageIndex = 0 ;
    }
    else //子节点
    {
    tNode.ImageIndex = tNode.Index + 1 ;
    tNode.SelectedImageIndex = tNode.Index + 1 ;
    } return tNode ;
    }

    #endregion

    #region //添加导航树节点
    private void AddTreeNode(XmlNode inXmlNode, TreeNode inTreeNode)
    {
    XmlNode xNode;
    TreeNode tNode;
    XmlNodeList nodeList;

    //
    if ( inTreeNode == null )
    {
    try
    {
    inTreeNode = ProcessTreeNode(inXmlNode, this.treeViewNavigator.Nodes);
    }
    catch(Exception e)
    {
    MessageBox.Show(e.Message);
    this.treeViewNavigator.Nodes.Clear() ;
    }
    } //
    if (inXmlNode.HasChildNodes)
    {
    nodeList = inXmlNode.ChildNodes;

    for(int i = 0; i<=nodeList.Count - 1; i++)
    {
    try
    {
    xNode = inXmlNode.ChildNodes[i];

    //只装载导航的树部分
    if ( xNode.Attributes["Type"].Value == "Tree" )
    {
    tNode = ProcessTreeNode(xNode, inTreeNode.Nodes);
    AddTreeNode(xNode, tNode);
    }
    }
    catch(Exception e)
    {
    MessageBox.Show(e.Message);
    this.treeViewNavigator.Nodes.Clear() ;
    }
    }
    }
    }

    #endregion
      

  5.   

    //下面是XML文件样本<?xml version="1.0" encoding="gb2312"?>
    <Navigator ID="20050314110500015625" Type="Tree" Title="导航语音总目录" Re="">
      <Navigator ID="20050314110544640625" Type="Tree" Title="111" Re="">
        <Navigator ID="20050314133042750000" Type="Tree" Title="22" Re="" />
        <Navigator ID="20050314133045656250" Type="Leaf" Title="1111" Re="" />
        <Navigator ID="20050314133047453125" Type="Leaf" Title="we45t345t645456" Re="" />
      </Navigator>
      <Navigator ID="20050314110548890625" Type="Tree" Title="222" Re="" />
      <Navigator ID="20050314110550890625" Type="Tree" Title="333" Re="" />
      <Navigator ID="20050314110552765625" Type="Tree" Title="444" Re="" />
      <Navigator ID="20050314110554531250" Type="Tree" Title="555" Re="" />
      <Navigator ID="20050314110556250000" Type="Tree" Title="666" Re="" />
      <Navigator ID="20050314110557968750" Type="Tree" Title="777" Re="" />
      <Navigator ID="20050314110559765625" Type="Tree" Title="888" Re="" />
      <Navigator ID="20050314110601781250" Type="Tree" Title="999" Re="" />
      <Navigator ID="20050314110604109375" Type="Tree" Title="000" Re="" />
      <Navigator ID="20050314133039703125" Type="Leaf" Title="11" Re="" />
    </Navigator>
      

  6.   

    To SniperZQ() :
      谢谢了,看了你的代码对我启发很大啊!