xml Teilnehmer Name in Nr ändern beim einlesen in VB.net

  • VB.NET

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

    xml Teilnehmer Name in Nr ändern beim einlesen in VB.net

    Hallo zusammen,

    ich muss für eine Arbeit einen bestehenden Quellcode so ändern, dass in einem Treeview aus einer eingelesenen XML Datei für Kurse und Teilnehmer statt dem Namen im Haptview und Unterview eine entsprechende Nummer angezeigt wird. Wo die Änderung stattfinden soll weiss ich, aber irgendwie kann ich die Änderung nicht so vornehmen, dass mir die Nummer statt dem Namen angezeigt wird.

    Kann mir hier vielleicht jemand weiterhelfen, ich stehe etwas unter Zeitdruck und wäre für jede Hilfe dankbar - vielleicht mit einer ganz kurzen erklärung warum

    Hier schon mal der Quellcode :

    VB.NET-Quellcode

    1. Dim tvwAusgewählt As String
    2. Dim tvwSchlüssel As Integer
    3. ''' <summary>
    4. ''' Füllt das TreeView mit den Knoten des XML-Documents
    5. ''' </summary>
    6. ''' <remarks>
    7. ''' Numeriert die Elemente über ihre Name-Eigenschaft.
    8. ''' Ruft zum weiteren Einlesen ebeneLesen auf
    9. ''' </remarks>
    10. Sub tvwFüllen()
    11. txtAusgabe.Text = ""
    12. tvw.BeginUpdate()
    13. tvw.Nodes.Clear()
    14. Dim xKnotenListe As XmlNodeList = xmlDok.SelectNodes("*")
    15. Dim tKnoten As TreeNode = tvw.Nodes.Add("")
    16. tvwSchlüssel = 0
    17. tKnoten.Name = tvwSchlüssel.ToString("00")
    18. For Each xn As XmlNode In xKnotenListe
    19. ebeneLesen(xn, tKnoten)
    20. Next
    21. tvw.EndUpdate()
    22. tvw.Select()
    23. End Sub
    24. ''' <summary>
    25. ''' Rekursives Einlesen von xmlNode zu TreeNode
    26. ''' </summary>
    27. ''' <param name="xmlKnoten">
    28. ''' Knoten des Xml-Dokuments
    29. ''' </param>
    30. ''' <param name="treeKnoten">
    31. ''' Enthält als Tag wahlweise die Eigenschaft
    32. ''' OuterXml, InnerXml, InnerText, Attributes oder
    33. ''' Name und Text des treeknoten.</param>
    34. ''' <remarks></remarks>
    35. Sub ebeneLesen(ByVal xmlKnoten As XmlNode, ByVal treeKnoten As TreeNode)
    36. tvwSchlüssel += 1
    37. treeKnoten.Text = xmlKnoten.Name
    38. Select Case True
    39. Case rbOuterXml.Checked
    40. treeKnoten.Tag = "OuterXml:" & vbCrLf & xmlKnoten.OuterXml
    41. Case rbInnerXml.Checked
    42. treeKnoten.Tag = "InnerXml: " & vbCrLf & xmlKnoten.InnerXml
    43. Case rbInnerText.Checked
    44. treeKnoten.Tag = "InnerText: " & vbCrLf & xmlKnoten.InnerText
    45. Case rbAttributes.Checked
    46. treeKnoten.Tag = "Attribute: " & vbCrLf
    47. treeKnoten.Tag &= "Name" & vbTab & vbTab & "InnerText" & vbCrLf
    48. For Each xmlAtt As XmlAttribute In xmlKnoten.Attributes
    49. Dim s As String = xmlAtt.Name & vbTab
    50. If s.Length < Strings.Len("Name" & vbTab & vbTab) Then
    51. s &= vbTab
    52. End If
    53. treeKnoten.Tag &= s & xmlAtt.InnerText & vbCrLf
    54. Next
    55. Case rbTreeView.Checked
    56. treeKnoten.Tag = "Name:" & vbTab & vbTab & "Text" & vbCrLf _
    57. & treeKnoten.Name & vbTab & vbTab & treeKnoten.Text
    58. Case Else
    59. treeKnoten.Tag = "InnerText: " & vbCrLf & xmlKnoten.InnerText
    60. End Select
    61. Dim tn As TreeNode
    62. Dim xn As XmlNode
    63. For Each xn In xmlKnoten.ChildNodes
    64. If xn.HasChildNodes Then
    65. tn = treeKnoten.Nodes.Add(tvwSchlüssel.ToString("00"), xn.Name)
    66. ebeneLesen(xn, tn)
    67. End If
    68. Next
    69. End Sub


    Noch ein Auszug aus der XML Liste :
    <?xml version="1.0" encoding="utf-8"?>
    <Kurse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Kurs Nr="101">
    <Bezeichnung>Word Grundlagen</Bezeichnung>
    <Teilnehmerliste>
    <Teilnehmer Nr="1001">
    <Name>Maximilian</Name>
    <Punkte>90</Punkte>
    </Teilnehmer>
    <Teilnehmer Nr="1002">
    <Name>Nora</Name>
    <Punkte>99</Punkte>
    </Teilnehmer>
    <Teilnehmer Nr="1003">
    <Name>Oskar</Name>
    <Punkte>80</Punkte>
    </Teilnehmer>
    </Teilnehmerliste>
    </Kurs>

    Robsi schrieb:

    dass in einem Treeview aus einer eingelesenen XML Datei für Kurse und Teilnehmer statt dem Namen im Haptview und Unterview eine entsprechende Nummer angezeigt wird.

    welche Nummer soll angezeigt werden?

    Soll man an den Daten auch was rum-ändern und rückspeichern können?
    Es sollen die <Kurs Nr="101> und <Teilnehmer Nr="1002"> Nummern angezeigt werden, die Liste ist so vorgegeben und für jeden Kurs soll die Kurs Nr bzw. für jeden Teilnehmer die Nr angezeigt werden.
    Änderungen sind eigentlich nicht gefordert.
    also dashier ist eiglich schon zuviel deine hausaufgabe gemacht:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Xml
    3. Public Class frmTV2Xml
    4. Private _Data As New FileInfo("..\..\Kursliste.xml")
    5. Private Sub fillTV(ByVal nodes As TreeNodeCollection, ByVal Xels As IEnumerable(Of XElement))
    6. For Each xel In Xels
    7. Dim xattr = xel.Attribute("Nr")
    8. Dim s = ""
    9. If xattr IsNot Nothing Then
    10. s = xattr.Value
    11. ElseIf xel.HasElements Then
    12. s = xel.Name.LocalName
    13. Else
    14. s = xel.Value
    15. End If
    16. Dim nd = nodes.Add(s)
    17. fillTV(nd.Nodes, xel.Elements)
    18. Next
    19. End Sub
    20. Private Sub frmTV2Xml_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    21. Dim XDoc = XDocument.Load(_Data.FullName)
    22. TreeView1.BeginUpdate()
    23. fillTV(TreeView1.Nodes, XDoc.Root.Elements)
    24. TreeView1.EndUpdate()
    25. TreeView1.ExpandAll()
    26. End Sub
    27. End Class
    Dateien
    • TV2Xml.zip

      (13,06 kB, 181 mal heruntergeladen, zuletzt: )