Combobox mit Xml doc füllen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von MarcoIT.

    Combobox mit Xml doc füllen

    hallo hab da einen Fehler
    in der combobox werden keine einträge angezeigt

    VB.NET-Quellcode

    1. Public Class frmPortale
    2. Private Sub frmPortale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. '>>>
    4. 'Dim xml As XDocument = XDocument.Load(Application.StartupPath & "\Datenbank.xml")
    5. Dim xml = _
    6. <Koordinaten>
    7. <Galaxy_1>
    8. <ID>1</ID>
    9. <GXName Name="Galaxy 1"></GXName>
    10. <Koordinaten01>000.0011 - 000.0000</Koordinaten01>
    11. <Koordinaten02>000.0022 - 000.0000</Koordinaten02>
    12. <Koordinaten03>000.0033 - 000.0000</Koordinaten03>
    13. <Koordinaten04>000.0000 - 000.0000</Koordinaten04>
    14. <Koordinaten05>000.0000 - 000.0000</Koordinaten05>
    15. <Koordinaten06>000.0000 - 000.0000</Koordinaten06>
    16. <Koordinaten07>000.0000 - 000.0000</Koordinaten07>
    17. <Koordinaten08>000.0000 - 000.0000</Koordinaten08>
    18. <Koordinaten09>000.0000 - 000.0000</Koordinaten09>
    19. <Koordinaten10>000.0000 - 000.0000</Koordinaten10>
    20. <Koordinaten11>000.0000 - 000.0000</Koordinaten11>
    21. <Koordinaten12>000.0000 - 000.0000</Koordinaten12><Portale>Portale(12)</Portale>
    22. </Galaxy_1>
    23. <Galaxy_2>
    24. <ID>2</ID>
    25. <GXName Name="Galaxy 2"></GXName>
    26. <Koordinaten01>000.0001 - 000.0000</Koordinaten01>
    27. <Koordinaten02>000.0002 - 000.0000</Koordinaten02>
    28. <Koordinaten03>000.0003 - 000.0000</Koordinaten03>
    29. <Koordinaten04>000.0000 - 000.0000</Koordinaten04>
    30. <Koordinaten05>000.0000 - 000.0000</Koordinaten05>
    31. <Koordinaten06>000.0000 - 000.0000</Koordinaten06>
    32. <Koordinaten07>000.0000 - 000.0000</Koordinaten07>
    33. <Koordinaten08>000.0000 - 000.0000</Koordinaten08>
    34. <Koordinaten09>000.0000 - 000.0000</Koordinaten09>
    35. <Koordinaten10>000.0000 - 000.0000</Koordinaten10>
    36. <Koordinaten11>000.0000 - 000.0000</Koordinaten11>
    37. <Koordinaten12>000.0000 - 000.0000</Koordinaten12>
    38. <Portale>Portale(12)</Portale>
    39. </Galaxy_2>
    40. </Koordinaten>
    41. Dim datasource = (From node As XElement In xml...<Koordinaten> Select New With {.display = node.<GXName>.@Name, .value = node}).ToArray
    42. cbx1.DisplayMember = "display"
    43. cbx1.ValueMember = "value"
    44. cbx1.DataSource = datasource
    45. End Sub
    46. Private Sub cbx1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbx1.SelectedIndexChanged
    47. Dim xe As XElement = DirectCast(cbx1.SelectedValue, XElement)
    48. lbl1.Text = xe.<Koordinaten01>.Value
    49. lbl2.Text = xe.<Koordinaten02>.Value
    50. lbl3.Text = xe.<Koordinaten03>.Value
    51. lbl4.Text = xe.<Koordinaten04>.Value
    52. lbl5.Text = xe.<Koordinaten05>.Value
    53. lbl6.Text = xe.<Koordinaten06>.Value
    54. lbl7.Text = xe.<Koordinaten07>.Value
    55. lbl8.Text = xe.<Koordinaten08>.Value
    56. lbl9.Text = xe.<Koordinaten09>.Value
    57. lbl10.Text = xe.<Koordinaten10>.Value
    58. lbl11.Text = xe.<Koordinaten11>.Value
    59. lbl12.Text = xe.<Koordinaten12>.Value
    60. lblPortale.Text = xe.<Portale>.Value
    61. End Class

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Alex - AK“ ()

    Hallo Alex ;)

    also ich hab das in etwa gleiche wie du, allerdings lese ich aus einem XML-String aus.
    Das ganze sieht so aus:

    VB.NET-Quellcode

    1. Private Sub XMLReader()
    2. Dim xDocKunde As XmlDocument = New XmlDocument
    3. Dim elemList As XmlNodeList = xDocKunde.GetElementsByTagName("Name") 'Hierbei wird ein Element ausgelesen
    4. Dim elemnr As XmlNodeList = xDocKunde.GetElementsByTagName("Nummer") ' Das unterelement
    5. Dim oid As XmlNodeList = xDocKunde.GetElementsByTagName("OID") ' und noch ein unterelement
    6. Dim i As Integer
    7. xDocKunde.LoadXml(srvkunden) 'Srvkunden solltest du durch dein Pfad ersetzten
    8. 'Kunden
    9. For i = 0 To elemList.Count - 1 '
    10. cb_kunden.Items.Add(elemList(i).InnerXml)
    11. Next i
    12. End Sub

    So und dadurch konnte ich dann wunderbar meine Comboboxen befüllen mit dem XML Werten
    Wünsch dir viel erfolg

    EDIT: Grüßle Marco !!Das wichtigste :thumbsup: !!
    hab den fehler gefunden nur weis nicht wie ich ihn beseitigen kann

    VB.NET-Quellcode

    1. Dim datasource = (From node As XElement In xml...<Galaxy_1> Select New With {.display = node.<GXName>.@Name, .value = node}).ToArray

    <Galaxy_1>


    was muss ich ändern damit er den zweiten Eintrag mit auflistet


    <Galaxy_2>
    Hey,

    ja wo ist deine FOR NEXT Schleife?

    So greifst du ja nur auf das Element 1 zu. Dann ist es ja klar das durch die feste Angabe nur 1 Element angezeigt werden kann oder meinst nicht auch?
    Um alle deine Elemente durchgehen zu können solltest du alle durchgehen und auslesen.

    Grüßle Marco
    Hey Alex,

    aber ich habe dir doch oben sogar einen ganzen Quellcode gegen, was eigentlich nicht meine Art ist.
    Du musst nur gewisse Dinge ersetzen und die Elemente die du angegeben hast einsetzten, mehr gibbet da doch nicht?
    Kannst du mir eventuell bitte deine XML mal zeigen?

    Grüßle Marco

    EDIT: Ich mein du wirst den XML-Text bestimmt in einer XML-Datei haben und nicht im VB-Code oder?
    ok ich probiers aus die xml ist im Programm integriert

    ums zu testen


    VB.NET-Quellcode

    1. Dim xml = _ <Koordinaten> <Galaxy_1> <ID>1</ID> <GXName Name="Galaxy 1"></GXName> <Koordinaten01>000.0011 - 000.0000</Koordinaten01> <Koordinaten02>000.0022 - 000.0000</Koordinaten02> <Koordinaten03>000.0033 - 000.0000</Koordinaten03> <Koordinaten04>000.0000 - 000.0000</Koordinaten04> <Koordinaten05>000.0000 - 000.0000</Koordinaten05> <Koordinaten06>000.0000 - 000.0000</Koordinaten06> <Koordinaten07>000.0000 - 000.0000</Koordinaten07> <Koordinaten08>000.0000 - 000.0000</Koordinaten08> <Koordinaten09>000.0000 - 000.0000</Koordinaten09> <Koordinaten10>000.0000 - 000.0000</Koordinaten10> <Koordinaten11>000.0000 - 000.0000</Koordinaten11> <Koordinaten12>000.0000 - 000.0000</Koordinaten12> <Portale>Portale(12)</Portale> </Galaxy_1>
    2. <Galaxy_2> <ID>2</ID> <GXName Name="Galaxy 2"></GXName> <Koordinaten01>000.0001 - 000.0000</Koordinaten01> <Koordinaten02>000.0002 - 000.0000</Koordinaten02> <Koordinaten03>000.0003 - 000.0000</Koordinaten03> <Koordinaten04>000.0000 - 000.0000</Koordinaten04> <Koordinaten05>000.0000 - 000.0000</Koordinaten05> <Koordinaten06>000.0000 - 000.0000</Koordinaten06> <Koordinaten07>000.0000 - 000.0000</Koordinaten07> <Koordinaten08>000.0000 - 000.0000</Koordinaten08> <Koordinaten09>000.0000 - 000.0000</Koordinaten09> <Koordinaten10>000.0000 - 000.0000</Koordinaten10> <Koordinaten11>000.0000 - 000.0000</Koordinaten11> <Koordinaten12>000.0000 - 000.0000</Koordinaten12> <Portale>Portale(12)</Portale> </Galaxy_2> </Koordinaten>
    Hey Alex,

    erstell dir eine XML-Datei in der du die XML-Daten besser verwalten kannst.

    einfach Datei erstelle: Koordinaten.xml
    Öffnen mit einem Editor und den Inhalt einfügen.
    In VB dann die XML laden mit:

    VB.NET-Quellcode

    1. Imports System.Xml' Die Imports machst du bitte über dein Public Class
    2. Imports System.Xml.XmlTextReader
    3. Imports System.Xml.XmlParserContext
    4. Imports System.Xml.Serialization
    5. Dim koordinaten As XmlDocument = New XmlDocument
    6. koordinaten.LoadXML("Hier dein Pfad von der frisch erstellen XML")


    Grüßle Marco