怎样将一个TreeView转化为XML导出?

解决方案 »

  1.   

    自己遍历节点,写到xml,跟LINQ没关系 ,treeview的nodes不能用LINQ
      

  2.   

    可以用对象  XmlSerializer 序列化与反序列化XML 这样操作更方便
      

  3.   

    递归方式 读取 TreeNode 写入 XmlNode
      

  4.   

    XmlTextWriter tw;
    public void WriteXML(TreeNodeCollection tc)
    {
        foreach (TreeNode Node in tc)
        {
            WriteOneXML(Node);
            WriteXML(Node.Nodes);
            tw.WriteEndElement();
        }
    }
     
    private void WriteOneXML(TreeNode Node)
    {
        string objid = Node.Tag.ToString();
        string objName = Node.Text;
     
        tw.WriteStartElement("cantoncode" + (Node.Level + 1));
        tw.WriteAttributeString("cantoncode", objid);
        tw.WriteAttributeString("cantonname", objName);
     
    }
     
    private void button3_Click(object sender, EventArgs e)
    {
     
        string fileName = @"C:/cantoncode.xml";
        tw = new XmlTextWriter(fileName, null);
        tw.Formatting = Formatting.Indented;
        tw.WriteStartDocument();
     
        tw.WriteStartElement("cantoncode");
        WriteXML(treeView1.Nodes);
     
        tw.WriteEndElement();
        tw.WriteEndDocument();
        tw.Flush();
        tw.Close();
    }
      

  5.   

    怎么知道treeview的节点深度啊??
      

  6.   

    最简单的把 TreeNode.Text 保存为 Xml 节点名的例子// 方法
    private static void TreeToXml(TreeNodeCollection tree, XmlDocument xmlDoc, XmlNode xml)
    {
        foreach (TreeNode item in tree)
        {
            XmlNode node = xml.AppendChild(xmlDoc.CreateElement(item.Text));
            TreeToXml(item.Nodes, xmlDoc, node);
        }
    }// 调用
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
    XmlNode root = xmlDoc.AppendChild(xmlDoc.CreateElement("root"));
    TreeToXml(某TreeView.Nodes, xmlDoc, root);
    xmlDoc.Save("保存路径");
      

  7.   

    这个说的很到位了,foreach遍历下然后存XML就行了吧