XML-Datei in Treeview darstellen und gruppieren

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    XML-Datei in Treeview darstellen und gruppieren

    Hallo zusammen,

    ich habe eine XML-Datei, welche ich via XMLParser-Klasse von blog.bigbasti.com/vb-treeview-…rn-und-zuruck-einlesen-2/ in eine Treeview lade. Funktioniert soweit auch, allerdings ist das Format der Quell-XML etwas "ungünstig" (lässt sich leider nicht ändern)

    Die XML-Datei sieht wie folgt aus:

    XML-Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <devices totalcount="3" listend="1">
    3. <item>
    4. <objid>32263</objid>
    5. <probe>Probe1</probe>
    6. <group>Server</group>
    7. <device>SQL-Server</device>
    8. </item>
    9. <item>
    10. <objid>47792</objid>
    11. <probe>Probe1</probe>
    12. <group>Server</group>
    13. <device>Mail-Server</device>
    14. </item>
    15. <item>
    16. <objid>47807</objid>
    17. <probe>Probe1</probe>
    18. <group>Storage</group>
    19. <device>Storage 01</device>
    20. </item>
    21. </devices>


    Ich möchte die Inhalte der XML in einer Treeview so ausgeben, dass zunächst nach dem Node "probe" und anschliessend nach "group" gruppiert wird:

    Probe1 (1. Ebene)
    --> Server (2. Ebene)
    ----> SQL-Server (3. Ebene)
    ----> Mail-Server (3. Ebene)
    --> Storage (2. Ebene)
    ----> Storage01 (3. Ebene)

    Bei Auswahl eines Gerätes (z.B. Mail-Server) möchte ich die übergeordnete objid als Node-Value weiter verarbeiten.

    Was wäre hier der beste / ein möglicher Ansatz?

    Viele Grüße
    naja, musst halt zunächstmal eine Klasse schreiben, die für jedes XmlElement eine Property bereithält.
    Das alte Lied: Hat man kein Datenmodell, kann man Daten nicht vernünftig einlesen, denn da ist ja nichts, wo man es hineinlesen könnte.

    jdfs. wenn du eine Liste deiner Klasse dann befüllt hast aus der Xml, dann kannste die auch mit Linq und Leichtigkeit gruppieren, auch mehrdimensional, wie's dir vorschwebt.
    XmlSerialisierung wäre möglich.

    Bischen problematisch, dass dein Xml vorgegeben ist, einfacher wäre, du hättest erst die Klasse, und würdest sie dann Serialisieren.
    Und dein Xml bildet eine ganz andere Liste ab, als das Bäumchen, was du daraus bauen willst.

    Also musst du zuerst eine Klasse RawData schaffen, die sich zu sonem Xml serialisiert, wies vorliegt.

    In diese Klasse kannste derlei Xml dann auch einlesen (deserialisieren).

    Und dann brauchst du noch Konverter RawData<->Treeview


    Zu serialisierung gibts was im "Datenbanken"-TutorialBereich von VBP.