Laden...

XML To TreeView

Erstellt von Siedlerchr vor 13 Jahren Letzter Beitrag vor 5 Jahren 17.777 Views
S
Siedlerchr Themenstarter:in
178 Beiträge seit 2009
vor 13 Jahren
XML To TreeView

Beschreibung:

Dieses Snippet liest eine XML Datei aus und fügt sie einer TV hinzu.
Das eigentliche Snippet hab ich gefunden und angepasst.

Edit// Snipper neu formatiert, ist beim Copy/Paste passiert..
Kommentare sind hierbei unnötig, da der Code soweit selbst erklärend ist.


  /// <summary>
        /// Diese Methode lädt ein XML-Dokument, geht es hierarchisch durch und fügt jeweils die Value Eigenschaft 
        /// eines XML-Nodes in eine TreeView als Node ein
        /// </summary>
        /// <param name="treeView"></param>
        public void XmlToTreeView(TreeView treeView)
        {
            myXmlDocument.Load("...");
            treeView.Nodes.Clear();
            XmlRekursivImport(treeView.Nodes, myXmlDocument.DocumentElement.ChildNodes);
            TranslateNodes(treeView.Nodes);
        }
        private void XmlRekursivImport(TreeNodeCollection elem, XmlNodeList xmlNodeList)
        {
            TreeNode treeNode = new TreeNode(); ;
            foreach (XmlNode myXmlNode in xmlNodeList)
            {
                if (myXmlNode.Value == null)
                {
                    treeNode = new TreeNode(myXmlNode.Name);
                }

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

Schlagwörter: XML, TreeView, Rekursiv

888 Beiträge seit 2007
vor 13 Jahren

Hallo Siedlerchr,

Veröffentlichungen sollte man immer gut formatieren, Dein Snipped sieht ein bischen wie hingeklatscht aus:

  • Keine Kommentare
  • Doppelte Leerzeilen
  • Doppelte Simikolons (; 😉
  • Zwischen Methoden & wo angebracht keine Leerzeile

Das kannst Du doch besser, oder?

Grüße

S
10 Beiträge seit 2014
vor 9 Jahren

Hallo,

ich weiß, man soll alte Threads nicht wieder zum leben erwecken. Allerdings frage ich mich, für woher diese Zeile kommt, bzw. was sie macht.

TranslateNodes(treeView.Nodes);

Mit freundlichen Grüßen

Slayerofyourmind

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo slayerofyourmind,

ich würde vermuten, dass diese eine eigene Methode von Siedlerchr ist, die bestimmte Nacharbeiten durchführt. Der eigentliche Import ist zu diesem Zeitpunkt aber schon erfolgt. Im einfachsten Fall kannst und solltest du den Aufruf einfach entfernen.

herbivore

P
63 Beiträge seit 2016
vor 5 Jahren

Ich war mal so frei und habe den Code leicht korrigiert und um die Ausgabe des Values ergänst.


/// <summary>
/// Diese Methode lädt ein XML-Dokument, geht es hierarchisch durch und fügt jeweils die Value Eigenschaft 
/// eines XML-Nodes in eine TreeView als Node ein
/// </summary>
/// <param name="treeView"></param>
public void XmlToTreeView(TreeView treeView)
{
    XmlDocument myXmlDocument = new XmlDocument();
    myXmlDocument.Load("yourXMLFile.xml");
    treeView.Nodes.Clear();
    XmlRekursivImport(treeView.Nodes, myXmlDocument.DocumentElement.ChildNodes);
}

private void XmlRekursivImport(TreeNodeCollection elem, XmlNodeList xmlNodeList)
{
    TreeNode treeNode = new TreeNode();

    foreach (XmlNode myXmlNode in xmlNodeList)
    {
        if (myXmlNode.Value == null)
        {
            treeNode = new TreeNode(myXmlNode.Name);
        }
        else
        {
            treeNode = new TreeNode(myXmlNode.Value);
        }

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