1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Attribut von XML wird nicht gelesen

Dieses Thema im Forum ".NET Datenverwaltung" wurde erstellt von joshi123, 25. November 2017.

  1. joshi123

    joshi123 Grünschnabel

    Hallo,

    leider habe ich im Forum nicht das richtige gefunden, bzw. konnte mit den Threads dann nichts anfangen um mein Problem zu lösen ;-|

    Ich habe das Problem, dass mein VB-Code nicht alle Attribute von meiner XML ausliest.

    Hier erst mal die Codes :
    XML :
    Code (XML):
    1.  
    2. <?xml version="1.0" encoding="UTF-8"?>
    3. <Programme Path="1">
    4.   <Feld Icon="Folder.ico" Path="2">Feld 1<VisualStudio Path="C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" Icon="VS.png">Visual Studio</VisualStudio>
    5.     <Excel Path="C:\Program Files\Microsoft Office 15\root\office15\EXCEL.EXE" Icon="Excel.png">Excel</Excel>
    6.   </Feld>
    7.   <Home Icon="Folder.ico" Path="3">Home Place<Notepad Path="C:\Program Files\Notepad++\notepad++.exe" Icon="notepad.png">Notepad ++</Notepad>
    8.     <JaTool Path="C:\Program Files (x86)\Tool7\javaw.exe" Argumente="-splash:splash.png -cp ./cl/cl.jar; -Dawt.useSystemAAFontSettings=on" Icon="JaTool.ico" RunPath="C:\Program Files (x86)\Tool7\bin\..">JaTool</JaTool>
    9.   </Home>
    10. </Programme>
    11.  
    VB-Code :
    Code (vb.net):
    1.  
    2. Option Strict On
    3. Imports System.Xml
    4. Imports System.IO
    5. Imports System.Text
    6. Imports System.Text.RegularExpressions
    7. Public Class treeViewLoadXml
    8.     Dim imgLst As New ImageList
    9.     Dim vImgPath(-1) As String, iv As Int32 = 0
    10.     Private Sub treeViewLoadXml_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    11.         Load_XML()
    12.     End Sub
    13.     Public Sub Load_XML()
    14.         Try
    15.             ' Get Xml's file stream.
    16.             imgLst.ImageSize = New Drawing.Size(30, 27)
    17.             Dim vPath() As String = Split(Application.ExecutablePath, "\")
    18.             vPath(vPath.Length - 1) = "XMLFile1.xml"
    19.             Dim filepath As String = Join(vPath, "\")
    20.             Dim _rstream As New FileStream(filepath, FileMode.Open)
    21.             ' Load Xml document.
    22.             '
    23.             Dim dom As New XmlDocument()
    24.             dom.Load(_rstream)
    25.             _rstream.Close()
    26.             ' Initialize treeView control.
    27.             '
    28.             TreeView1.BeginUpdate()
    29.             TreeView1.Nodes.Clear()
    30.             TreeView1.Nodes.Add(New TreeNode(dom.DocumentElement.Name))
    31.             ' Populate the treeView with the dom nodes.
    32.             '
    33.             AddNode(dom.DocumentElement, TreeView1.Nodes(0))
    34.             If CBool(iv) Then
    35.                 For i = 0 To iv - 1
    36.                     imgLst.Images.Add(Image.FromFile(vImgPath(i)))
    37.                 Next
    38.                 TreeView1.ImageList = imgLst
    39.             End If
    40.             TreeView1.EndUpdate()
    41.             'TreeView1.ExpandAll()
    42.         Catch xmlEx As XmlException
    43.             MessageBox.Show(xmlEx.Message)
    44.         Catch ex As Exception
    45.             MessageBox.Show(ex.Message)
    46.         End Try
    47.     End Sub
    48.     Private Sub AddNode(ByVal inXmlNode As XmlNode, ByVal inTreeNode As TreeNode)
    49.         Dim i As Integer
    50.         If inXmlNode.HasChildNodes Then
    51.             Dim nodeList As XmlNodeList
    52.             nodeList = inXmlNode.ChildNodes
    53.             i = 0
    54.             While i <= nodeList.Count - 1
    55.                 Dim xNode As XmlNode = inXmlNode.ChildNodes(i)
    56.                 Dim imgIndex As Int32 = -1
    57.                 Dim SelimgIndex As Int32 = -1
    58.                 If xNode.Attributes IsNot Nothing Then
    59.                     For Each att As XmlAttribute In xNode.Attributes
    60.                         If att.Name = "Icon" Then
    61.                             imgIndex = addImage(att.Value)
    62.                             SelimgIndex = addImage(att.Value)
    63.                             Exit For
    64.                         End If
    65.                     Next
    66.                 End If
    67.                 Dim tNode As New TreeNode(xNode.Name)
    68.                 Dim bIsTxt As Boolean = False
    69.                 If tNode.Text = "#text" Then
    70.                     tNode.Text = xNode.Value
    71.                     bIsTxt = True
    72.                 End If
    73.                 If imgIndex <> -1 Then
    74.                     tNode.ImageIndex = imgIndex
    75.                 End If
    76.                 If SelimgIndex <> -1 Then
    77.                     tNode.SelectedImageIndex = SelimgIndex
    78.                 End If
    79.                 If bIsTxt Then
    80.                     'inTreeNode.Text += " " + tNode.Text '
    81.                     inTreeNode.Text = tNode.Text
    82.                 Else
    83.                     inTreeNode.Nodes.Add(tNode)
    84.                     AddNode(xNode, tNode)
    85.                 End If
    86.                 i += 1
    87.             End While
    88.             If inXmlNode.Attributes IsNot Nothing AndAlso inXmlNode.Attributes("Path") IsNot Nothing Then
    89.                 inTreeNode.Name = inXmlNode.Attributes("Path").Value
    90.             End If
    91.             If inXmlNode.Attributes IsNot Nothing AndAlso inXmlNode.Attributes("Argumente") IsNot Nothing Then
    92.                 inTreeNode.Name = inXmlNode.Attributes("Argumente").Value
    93.             End If
    94.             If inXmlNode.Attributes IsNot Nothing AndAlso inXmlNode.Attributes("RunPath") IsNot Nothing Then
    95.                 inTreeNode.Name = inXmlNode.Attributes("RunPath").Value
    96.             End If
    97.         End If
    98.     End Sub
    99.     Function addImage(path As String) As Int32
    100.         Dim i As Int32 = Array.IndexOf(vImgPath, path)
    101.         If i = -1 AndAlso IO.File.Exists(path) Then
    102.             ReDim Preserve vImgPath(iv)
    103.             Me.vImgPath(iv) = path
    104.             i = iv
    105.             iv += 1
    106.         End If
    107.         Return i
    108.     End Function
    109.     Private Sub TreeView1_NodeMouseDoubleClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
    110.         Try
    111.             Dim Path As String = TreeView1.SelectedNode.Name
    112.             Dim Argumente As String = TreeView1.SelectedNode.Name
    113.             Dim RunPath As String = TreeView1.SelectedNode.Name
    114.  
    115.             If IsNumeric(Path) Then
    116.                 Dim nAction As Int32 = Int32.Parse(Path)
    117.                 Select Case nAction
    118.                     Case 1 'wenn was gemacht werden soll, wenn Path ist nur eine Zahl
    119.                         ' do job for Path="1" '
    120.                     Case 2
    121.                         ' do job for Path="2" '
    122.                     Case 3
    123.                         ' do job for Path="3" '
    124.                 End Select
    125.             Else
    126.                 Select Case e.Node.Text
    127.                     Case "Visual Studio"
    128.                         MsgBox("Visual Studio")
    129.                         '...
    130.                     Case "Excel"
    131.                         MsgBox("Excel")
    132.                         '...
    133.                     Case "Notepad ++"
    134.                         MsgBox("Notepad")
    135.                         '...
    136.                 End Select
    137.                 If File.Exists(Path) Then
    138.                     Process.Start(Path)
    139.                     'Dim MyProcess As New Process()
    140.                     'MyProcess.StartInfo.FileName = Path
    141.                     'MyProcess.StartInfo.Arguments = Argumente
    142.                     'MyProcess.Start()
    143.                 End If
    144.             End If
    145.         Catch ex As Exception
    146.             MsgBox("kein Programm gefunden")
    147.         End Try
    148.     End Sub
    149.  
    150.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    151.         Dim Path As String = TreeView1.SelectedNode.Name
    152.         Dim Argumente As String = TreeView1.SelectedNode.Name
    153.         Dim RunPath As String = TreeView1.SelectedNode.Name
    154.         Label1.Text = Path
    155.         Label2.Text = Argumente
    156.         Label3.Text = RunPath
    157.        
    158.     End Sub
    159. End Class
    160.  
    Die XML wird soweit gelesen, dass jeder Knoten sein Icon bekommt ("Icon" welches als Attribut angegeben ist) und auch der Pfad (Path) zum starten des Programms wird gelesen. Jedoch werden die weiteren Attribute ("Argumente" und "RunPath") nicht mit eingelesen und können somit auch nicht von mir verwendet werden.

    Ich komme einfach nicht weiter und hoffe das ihr mir hier weiterhelfen könnt!?!?
     
  2. Spyke

    Spyke Capoeirista Premium-User

    Setzt mal Breakpoint bei Argumente und RunPath ob dort reignesprungen wird.
    Meine erste vermutung wäre erstmal das die Arguemnte richtig abgefragt werden aber da du mit dem gleichen inTreeNode Arbeitest und dort den Namen immer neu setzt, gewinnt das letzte Xml-Argumente das abgefragt wird.
    Würd ich jetzt auf den ersten Blick vermuten.
     
  3. joshi123

    joshi123 Grünschnabel

    Guter Tipp mit den Breakpoints.
    Es ist tatsächlich so, dass es egal ist, ob ich die Attribute separat definiere (per "Dim Argumente As String = TreeView1.SelectedNode.Name"), es wird immer das letzte Attribut von dem Knoten ausgegeben.
    Nun ist mein Latein zu Ende und ich komm nicht mehr weiter.
     
  4. Spyke

    Spyke Capoeirista Premium-User

  5. joshi123

    joshi123 Grünschnabel

    Ich hänge leider weiterhin fest. ich weiss nicht, wie ich diese Hilfsklasse nun in meinen Code einbauen soll, damit es so funktioniert, wie es soll ;-( dafür bin ich einfach noch ein Grünschnabel
     
  6. Spyke

    Spyke Capoeirista Premium-User

    Hilfsklasse:
    Code (Text):
    1. class MeineKlasse
    2. {
    3.     public string EigenschaftA { get; set; }
    4.     public string EigenschaftB { get; set; }
    5. }
    Werte zuweisen:
    Code (Text):
    1. MeineKlasse mk = new MeineKlasse();
    2. ...
    3. mk.EigenschaftA = inXmlNode.Attributes["Path"].Value;
    4. ...
    5. mk.EigenschaftB = inXmlNode.Attributes["RunPath"].Value;
    6. ...
    7. inTreeNode.Tag = mk;
    Tag abfragen:
    Code (Text):
    1. MeineKlasse mk = TreeView1.SelectedNode.Tag as MeineKlasse;
    2. if (mk != null)
    3. {
    4.     ....
    5. }
    ist zwar C# aber vielleicht hilfts bissl
     
  7. joshi123

    joshi123 Grünschnabel

    Komplett umwandeln und verstehen kann ich es leider nicht.
    Mein Versuch :
    Hilfsklasse
    Code (vb.net):
    1. Public Class MeineKlasse
    2.         Dim EigenschaftA As String
    3.         Dim EigenschaftB As String
    4.     End Class
    bei Werte zuweisen und Tag abfragen kriselt es leider schon... Das was ich in VB übersetzen konnte, müsste folgendes sein :
    Code (vb.net):
    1. mk.EigenschaftA = inXmlNode.Attributes("Path").Value
    2.             ...
    3.         mk.EigenschaftB = inXmlNode.Attributes("RunPath").Value
    4.  
    5.  
    6. inTreeNode.Tag = mk
    7.  
    8.         MeineKlasse.mk = TreeView1.SelectedNode.Tag as MeineKlasse
    9.         If mk IsNot Nothing Then
    10.             '...
    11.         End If
     
  8. joshi123

    joshi123 Grünschnabel

    Das Problem ist, dass es schon bei "mk" hängt, da es damit nichts anfangen kann.
     
  9. Spyke

    Spyke Capoeirista Premium-User

  10. joshi123

    joshi123 Grünschnabel

    habe folgendes jetzt alles probiert.

    Code (vb.net):
    1. Dim MeineKlasse MK As New MeineKlasse() = TryCast()
    2.         inTreeNode.Tag = mk
    3.  
    4.         MeineKlasse.mk = TreeView1.SelectedNode.Tag as MeineKlasse
    alles ohne Erfolg.

    Danke für die Mühen, aber ich glaube ich muss das alles irgendwie doch ohne XML umsetzen ;-( Mir fehlen dazu einfach zu viele Kenntnisse.
    Vielleicht kann noch wer mit VB.net noch helfen irgendwann!?
     
  11. Spyke

    Spyke Capoeirista Premium-User

    Tag auslesen (Vorausgesetzt du hast im Tag der Node auch ein Objekt vom Typ MeineKlasse hinterlegt):
    Code (Text):
    1. Dim mk As MeineKlasse = TryCast(TreeView1.SelectedNode.Tag, MeineKlasse)
    2. If mk Is Nothing Then
    3. ...
    4. Else
    5. ...
    6. End If
     
  12. joshi123

    joshi123 Grünschnabel

    Ich vermute, dass mit "Tag" das Attribut von den jeweils ausgewählten Knoten sein soll!?
    So wie ich es verstanden habe, sieht der Code nun wie folgt aus. Das Problem ist jedoch, dass ich die Labels nicht mit den Daten der Attribute ("RunPath" und "Argumente") ausgeben lassen kann. RunPath und Argumente wird mir hier als Fehler angezeigt, weil sie ein "TYP" sind!?!? Das obwohl "RunPath" und "Argumente" global als String definiert wurde?!?

    Code (vb.net):
    1. Public Class RunPath
    2.         Dim RunPath As String
    3.     End Class
    4.     Public Class Argumente
    5.         Dim Argumente As String
    6.     End Class
    7.     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    8.         Dim mk As RunPath = TryCast(TreeView1.SelectedNode.Tag, RunPath)
    9.         If mk IsNot Nothing Then
    10.             Label1.Text = RunPath
    11.         End If
    12.         Dim mk1 As Argumente = TryCast(TreeView1.SelectedNode.Tag, Argumente)
    13.         If mk1 IsNot Nothing Then
    14.             Label2.Text = Argumente
    15.         End If
    16.     End Sub
    Vielleicht nochmal zur genaueren Erklärung :
    Auf meiner Form1 habe ich einen XMLTreeView, welchen ich mit den Daten der XML-Datei befülle. Aktuell sollte es eigentlich so sein, dass wenn ich den Knoten "JaTool" ausgewählt habe und dann auf den Button-3 klicke, dann soll das Label1 und Label2 mit den jeweiligen Daten der Attribute aus der XML befüllt werden.
     
  13. Spyke

    Spyke Capoeirista Premium-User

    eine Klasse Machen die alle deine Xml Attribute für eine XmlNode hält, z.B.:
    Code (vb.net):
    1. Public Class MeineXmlWerte
    2.         Dim RunPath As String
    3.         Dim Argumente As String
    4. End Class
    auslesen des tags einer selektierten TreeView Node und Label setzen:
    Code (vb.net):
    1.   Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    2.         Dim mk As MeineXmlWerte = TryCast(TreeView1.SelectedNode.Tag, MeineXmlWerte)
    3.         If mk IsNot Nothing Then
    4.             Label1.Text = mk.RunPath
    5.             Label2.Text = mk.Argumente
    6.         End If
    7.     End Sub

    P.S.: jetzt muss nur noch der Tag richtig gesetzt/angegeben werden
     
  14. joshi123

    joshi123 Grünschnabel

    Danke. Nur leider bleibt es dabei, dass es "mk.RunPath" und "mk.Argumente" als Fehler definiert - diesmal jedoch :
    Fehler 1 "WindowsApplication1.treeViewLoadXml.MeineXmlWerte.RunPath" ist in diesem Kontext nicht zugreifbar, da es "Private" ist.
    Fehler 2 "WindowsApplication1.treeViewLoadXml.MeineXmlWerte.Argumente" ist in diesem Kontext nicht zugreifbar, da es "Private" ist.
     
  15. joshi123

    joshi123 Grünschnabel

    Habe auch schon alle Subs als Public zu machen, aber die Fehler bleiben die gleichen
     
  16. Spyke

    Spyke Capoeirista Premium-User

  17. joshi123

    joshi123 Grünschnabel

    Der Fehler war, anstatt "Public RunPath As String" hatte ich "Dim RunPath As String".

    So nun ist der Code ohne Fehler, jedoch bleibt es dabei, die Labels nicht mit den Daten gefüllt werden, welche in den Attributen bei der XML stehen... Es kommt aber auch keine Fehlermeldung oder Exception.

    Hier nochmal der komplette Code :
    Code (vb.net):
    1. Option Strict On
    2. Imports System.Xml
    3. Imports System.IO
    4. Imports System.Text
    5. Imports System.Text.RegularExpressions
    6. Public Class treeViewLoadXml
    7.     Dim imgLst As New ImageList
    8.     Dim vImgPath(-1) As String, iv As Int32 = 0
    9.     Private Sub treeViewLoadXml_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    10.         Load_XML()
    11.     End Sub
    12.     Public Sub Load_XML()
    13.         Try
    14.             ' Get Xml's file stream.
    15.             imgLst.ImageSize = New Drawing.Size(30, 27)
    16.             Dim vPath() As String = Split(Application.ExecutablePath, "\")
    17.             vPath(vPath.Length - 1) = "XMLFile1.xml"
    18.             Dim filepath As String = Join(vPath, "\")
    19.             Dim _rstream As New FileStream(filepath, FileMode.Open)
    20.             ' Load Xml document.
    21.             '
    22.             Dim dom As New XmlDocument()
    23.             dom.Load(_rstream)
    24.             _rstream.Close()
    25.             ' Initialize treeView control.
    26.             '
    27.             TreeView1.BeginUpdate()
    28.             TreeView1.Nodes.Clear()
    29.             TreeView1.Nodes.Add(New TreeNode(dom.DocumentElement.Name))
    30.             ' Populate the treeView with the dom nodes.
    31.             '
    32.             AddNode(dom.DocumentElement, TreeView1.Nodes(0))
    33.             If CBool(iv) Then
    34.                 For i = 0 To iv - 1
    35.                     imgLst.Images.Add(Image.FromFile(vImgPath(i)))
    36.                 Next
    37.                 TreeView1.ImageList = imgLst
    38.             End If
    39.             TreeView1.EndUpdate()
    40.             'TreeView1.ExpandAll()
    41.         Catch xmlEx As XmlException
    42.             MessageBox.Show(xmlEx.Message)
    43.         Catch ex As Exception
    44.             MessageBox.Show(ex.Message)
    45.         End Try
    46.     End Sub
    47.  
    48.     Private Sub AddNode(ByVal inXmlNode As XmlNode, ByVal inTreeNode As TreeNode)
    49.         Dim i As Integer
    50.         If inXmlNode.HasChildNodes Then
    51.             Dim nodeList As XmlNodeList
    52.             nodeList = inXmlNode.ChildNodes
    53.             i = 0
    54.             While i <= nodeList.Count - 1
    55.                 Dim xNode As XmlNode = inXmlNode.ChildNodes(i)
    56.                 Dim imgIndex As Int32 = -1
    57.                 Dim SelimgIndex As Int32 = -1
    58.                 If xNode.Attributes IsNot Nothing Then
    59.                     For Each att As XmlAttribute In xNode.Attributes
    60.                         If att.Name = "Icon" Then
    61.                             imgIndex = addImage(att.Value)
    62.                             SelimgIndex = addImage(att.Value)
    63.                             Exit For
    64.                         End If
    65.                     Next
    66.                 End If
    67.                 Dim tNode As New TreeNode(xNode.Name)
    68.                 Dim bIsTxt As Boolean = False
    69.                 If tNode.Text = "#text" Then
    70.                     tNode.Text = xNode.Value
    71.                     bIsTxt = True
    72.                 End If
    73.                 If imgIndex <> -1 Then
    74.                     tNode.ImageIndex = imgIndex
    75.                 End If
    76.                 If SelimgIndex <> -1 Then
    77.                     tNode.SelectedImageIndex = SelimgIndex
    78.                 End If
    79.                 If bIsTxt Then
    80.                     'inTreeNode.Text += " " + tNode.Text '
    81.                     inTreeNode.Text = tNode.Text
    82.                 Else
    83.                     inTreeNode.Nodes.Add(tNode)
    84.                     AddNode(xNode, tNode)
    85.                 End If
    86.                 i += 1
    87.             End While
    88.             If inXmlNode.Attributes IsNot Nothing AndAlso inXmlNode.Attributes("Path") IsNot Nothing Then
    89.                 inTreeNode.Name = inXmlNode.Attributes("Path").Value
    90.             End If
    91.             If inXmlNode.Attributes IsNot Nothing AndAlso inXmlNode.Attributes("RunPath") IsNot Nothing Then
    92.                 inTreeNode.Name = inXmlNode.Attributes("RunPath").Value
    93.             End If
    94.             If inXmlNode.Attributes IsNot Nothing AndAlso inXmlNode.Attributes("Argumente") IsNot Nothing Then
    95.                 inTreeNode.Name = inXmlNode.Attributes("Argumente").Value
    96.             End If
    97.         End If
    98.  
    99.     End Sub
    100.    
    101.  
    102.     Function addImage(path As String) As Int32
    103.         Dim i As Int32 = Array.IndexOf(vImgPath, path)
    104.         If i = -1 AndAlso IO.File.Exists(path) Then
    105.             ReDim Preserve vImgPath(iv)
    106.             Me.vImgPath(iv) = path
    107.             i = iv
    108.             iv += 1
    109.         End If
    110.         Return i
    111.     End Function
    112.     Private Sub TreeView1_NodeMouseDoubleClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
    113.         Try
    114.             Dim Path As String = TreeView1.SelectedNode.Name
    115.             Dim Argumente As String = TreeView1.SelectedNode.Name
    116.             Dim RunPath As String = TreeView1.SelectedNode.Name
    117.  
    118.             If IsNumeric(Path) Then
    119.                 Dim nAction As Int32 = Int32.Parse(Path)
    120.                 Select Case nAction
    121.                     Case 1 'wenn was gemacht werden soll, wenn Path ist nur eine Zahl
    122.                         ' do job for Path="1" '
    123.                     Case 2
    124.                         ' do job for Path="2" '
    125.                     Case 3
    126.                         ' do job for Path="3" '
    127.                 End Select
    128.             Else
    129.                 Select Case e.Node.Text
    130.                     Case "Visual Studio"
    131.                         MsgBox("Visual Studio")
    132.                         '...
    133.                     Case "Excel"
    134.                         MsgBox("Excel")
    135.                         '...
    136.                     Case "Notepad ++"
    137.                         MsgBox("Notepad")
    138.                         '...
    139.                 End Select
    140.                 If File.Exists(Path) Then
    141.                     Process.Start(Path)
    142.                 End If
    143.             End If
    144.         Catch ex As Exception
    145.             MsgBox("kein Programm gefunden")
    146.         End Try
    147.     End Sub
    148.  
    149.     Public Class MeineXmlWerte
    150.         Public RunPath As String
    151.         Public Argumente As String
    152.     End Class
    153.    
    154.     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    155.         Dim mk As MeineXmlWerte = TryCast(TreeView1.SelectedNode.Tag, MeineXmlWerte)
    156.         If mk IsNot Nothing Then
    157.             Label1.Text = mk.RunPath
    158.             Label2.Text = mk.Argumente
    159.         End If
    160.     End Sub
    161. End Class
     
  18. Spyke

    Spyke Capoeirista Premium-User

    du erstellst auch keine Instanz von MeineXmlWerte, setzt dort nicht die Werte und übergibst es auch nicht an das Tag der TreeView Node.

    so ungefähr könnts/sollts sein
    Code (vb.net):
    1.     Private Sub AddNode(ByVal inXmlNode As XmlNode, ByVal inTreeNode As TreeNode)
    2.  
    3.  
    4. Dim mk As MeineXmlWerte = New MeineXmlWerte()
    5. inTreeNode.Tag = mk
    6.  
    7.  
    8.         Dim i As Integer
    9.         If inXmlNode.HasChildNodes Then
    10.  
    11. ...
    12.  
    13.  
    14.             If inXmlNode.Attributes IsNot Nothing AndAlso inXmlNode.Attributes("RunPath") IsNot Nothing Then
    15.                 mk.RunPath = inXmlNode.Attributes("RunPath").Value
    16.             End If
    17.             If inXmlNode.Attributes IsNot Nothing AndAlso inXmlNode.Attributes("Argumente") IsNot Nothing Then
    18.                 mk.Argumente = inXmlNode.Attributes("Argumente").Value
    19.             End If
    20.  
    21.  
    22. ...
    23.  
    24.  
    25.     End Sub
    Schau dir am besten mal an VB.Net Tutorial zu Klassen und deren Verwendung an.
     
  19. joshi123

    joshi123 Grünschnabel

    Vielen Dank dir. Das Tutorial werde ich mir auf alle Fälle ansehen.
     
Die Seite wird geladen...