Feedback

C# - TreeView Export To Xml OR Import from XMl

Veröffentlicht von am 11/24/2007
(4 Bewertungen)
Mithilfe dieser kleinen Klasse, kann der aufbau des Treeviews in eine Xml Datei exportiert
und natürlich auch wieder in einen TreeView Importiert werden.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace TreeViewDemo {
    /// <summary>
    /// Mithilfe dieser kleinen Klasse, kann der aufbau des Treeviews in eine Xml Datei exportiert
    /// und natürlich auch wieder in einen TreeView Importiert werden.
    /// </summary>
    /// <example>
    /// <code lang="C#">
    /// TreeView tmpTreeview = new TreeView();
    /// 
    /// XmlHandler xmlHandler = new XmlHandler();
    /// //treeview TO Xml
    /// xmlHandler.ExportTreeToXmlFile(tmpTreeview, "C:\\temp\\tmpTreeView.xml");
    /// </code>
    /// </example>
    public class XmlHandler {
        XmlDocument xmlDocument;

        /// <summary>
        /// Initialisiert eine neue Instanz der MultiClipboard Klasse.
        /// </summary>
        public XmlHandler() {
        }

        /// <summary>
        /// Den inhalt des TreeViews in eine xml Datei exportieren
        /// </summary>
        /// <param name="treeView">Der TreeView der exportiert werden soll</param>
        /// <param name="path">Ein  Pfad unter dem die Xml Datei entstehen soll</param>
        public void TreeViewToXml(TreeView treeView, String path) {
            xmlDocument = new XmlDocument();
            xmlDocument.AppendChild(xmlDocument.CreateElement("ROOT"));
            XmlRekursivExport(xmlDocument.DocumentElement,treeView.Nodes);
            xmlDocument.Save(path);
        }

        /// <summary>
        /// Eine vorher Exportierte Xml Datei wieder in ein TreeView importieren
        /// </summary>
        /// <param name="path">Der Quellpfad der Xml Datei</param>
        /// <param name="treeView">Ein TreeView in dem der Inhalt der Xml Datei wieder angezeigt werden soll</param>
        /// <exception cref="FileNotFoundException">gibt an das die Datei nicht gefunden werden konnte</exception>
        public void XmlToTreeView(String path, TreeView treeView) {
            xmlDocument = new XmlDocument();
            
            xmlDocument.Load(path);
            treeView.Nodes.Clear();
            XmlRekursivImport(treeView.Nodes, xmlDocument.DocumentElement.ChildNodes);
        }

        private XmlNode XmlRekursivExport(XmlNode nodeElement, TreeNodeCollection treeNodeCollection) {
            XmlNode xmlNode = null;
            foreach (TreeNode treeNode in treeNodeCollection) {
                xmlNode = xmlDocument.CreateElement("TreeViewNode");
                
                xmlNode.Attributes.Append(xmlDocument.CreateAttribute("value"));
                xmlNode.Attributes["value"].Value = treeNode.Text;

                
                if (nodeElement != null)
                    nodeElement.AppendChild(xmlNode);

                if (treeNode.Nodes.Count > 0) {
                    XmlRekursivExport(xmlNode, treeNode.Nodes);
                }
            }
            return xmlNode;
        }

        private void XmlRekursivImport(TreeNodeCollection elem, XmlNodeList xmlNodeList) {
            TreeNode treeNode;
            foreach (XmlNode myXmlNode in xmlNodeList) {
                treeNode = new TreeNode(myXmlNode.Attributes["value"].Value);

                if (myXmlNode.ChildNodes.Count > 0) {
                    XmlRekursivImport(treeNode.Nodes, myXmlNode.ChildNodes);
                }
                elem.Add(treeNode);
            }
        }
    }
}

Abgelegt unter TreeView, Xml, Import, Export.

1 Kommentare zum Snippet

Timo Boehme schrieb am 11/25/2008:
Hey that code is great. I have taken your code as base. Addes some lines to save the selected node, TreeNode.Name, Imageindex, etc and was happy with the result.
Best Regards
Timo
www.goldengel.ch
 

Logge dich ein, um hier zu kommentieren!