inhoud xml naar listbox

Status
Niet open voor verdere reacties.

pascallino

Gebruiker
Lid geworden
29 dec 2009
Berichten
167
Hallo,
Ik wou de inhoud van een xml file lader in een listbox.
Dit is mijn xml file:
Code:
<Robot>
  <Robot id="1">
    <naam>Vijf minuten robot.</naam>
    <info>Deze robot heet robot1.</info>
   </Robot>
  <Robot id="2">
    <naam>Robot2</naam>
    <info>Deze robot heet robot2.</info>
  </Robot>
</Robot>
Mijn bedoeling is dus dat hij de naam van elke robot laad in een listbox.
Dit mijn code tot nu toe:
Code:
Imports System.Xml
Public Class Frm_main

    Private Sub Frm_main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Lbl_naam.Text = "...."
        Lbl_info.Text = "...."
        Lbx_robot.Items.Clear()
        Dim xml As New XmlDocument
        xml.Load("D:\robot.xml")
        
    End Sub

    Private Sub Lbx_robot_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Lbx_robot.SelectedIndexChanged
        Try
            Dim xml As New XmlDocument
            xml.Load("D:\robot.xml")
            Dim Node1 = xml.SelectSingleNode("Robot/" & Lbx_robot.SelectedItem & "/naam").InnerText
            Dim Node2 = xml.SelectSingleNode("Robot/" & Lbx_robot.SelectedItem & "/info").InnerText
            Lbl_naam.Text = Node1
            Lbl_info.Text = Node2
        Catch ex As Exception
            MsgBox("Robot niet gevonden", MsgBoxStyle.Information)
        End Try
    End Sub
End Class
Groeten Pascallino
 
Ik heb weer een beetje erbij.
Het lukt me nu om de listbox te vullen.
Maar als ik op een item in de listbox druk moet hij de gegevens naar 2 labels laden.
Dit lukt me nog niet. Hij pakt alleen maar de info van het eerste item.
Dit is mijn code:
Code:
Imports System.Xml
Public Class Frm_main

    Private Sub Frm_main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Lbl_naam.Text = "...."
        Lbl_info.Text = "...."
        Lbx_robot.Items.Clear()
        Dim xml As New XmlDocument
        xml.Load("D:\robot.xml")
        Dim nodelist As XmlNodeList
        Dim node As XmlNode
        nodelist = xml.SelectNodes("Robots/Robot")

        For Each node In nodelist
            Lbx_robot.Items.Add(node.SelectSingleNode("naam").InnerText)
        Next
    End Sub

    Private Sub Lbx_robot_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Lbx_robot.SelectedIndexChanged
        Try
            Dim xml As New XmlDocument
            xml.Load("D:\robot.xml")
            Dim node = xml.SelectSingleNode("Robots/Robot/naam").InnerText
            Dim node2 = xml.SelectSingleNode("Robots/Robot/info").InnerText
            Lbl_naam.Text = node
            Lbl_info.Text = node2

        Catch ex As Exception
            MsgBox("Robot niet gevonden", MsgBoxStyle.Information)
        End Try
    End Sub
End Class
Groeten pascallino
 
Ik ben weer iets verder maar het werkt nog steeds niet.
Hier is de foutmelding: "De objectverwijzing is niet op een exemplaar van een object ingesteld."
Hier is mijn code:
Code:
Imports System.Xml.LinQ
Imports System.Xml
Imports System

Public Class Frm_main

    Private Sub Frm_main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Dim xml As New XmlDocument
            xml.Load("D:\robot.xml")
            Dim nodelist As XmlNodeList
            nodelist = xml.GetElementsByTagName("Robot")
            For i = 0 To nodelist.Count - 1
                'Declareren van de attributes van de XML Node
                Dim Naam As String = nodelist(i).Attributes("Naam").Value
                Dim Info As String = nodelist(i).Attributes("Info").Value


                'Zet alles bij elkaar in een Array
                Dim str(3) As String
                str(0) = Naam
                str(1) = Info

                'Maak een ListviewItem aan met als gegevens de Array
                Dim itm As ListViewItem
                itm = New ListViewItem(str)
                ListView1.Items.Add(itm)
            Next
        Catch ex As Exception

        End Try
    End Sub

    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
        Dim selectie = ListView1.SelectedItems.Item(0).ToString
        Dim selectie1 = selectie.Split("{")
        Dim selectie2 = selectie1(1).Split("}")
        Dim xml As New XmlDocument
        xml.Load("D:\robot.xml")
        Dim node As String
        node = xml.SelectSingleNode("//Robot[naam='" & selectie2(0) & "']").InnerText
        PictureBox1.ImageLocation = node





    End Sub
End Class
 
Het lukt me nu bijna helemaal.
Ik heb de xml aangepast:
Code:
<?xml version="1.0" encoding="utf-8"?>
<Robots>
  <Robot Naam="Vijf minuut" >
    <Naam>Vijf minuut</Naam>
    <Info>Deze robot maak je in vijf minuten.</Info>
    <url>http://www.nxtprograms.com/five_minute_bot/DCP_8898.JPG</url>
  </Robot>
  <Robot Naam="De moordenaar" >
    <Naam>De moordenaar</Naam>
    <Info>Deze robot brengt elke robot naar de robot hemel.</Info>
    <Url>http://www.nxtprograms.com/claw_striker/DCP_9516.JPG</Url>
  </Robot>
  <Robot Naam="Sterkste" >
    <Naam>Sterkste</Naam>
    <Info>Deze robot is de aller stevigste.</Info>
    <Url>http://www.nxtprograms.com/mini_sumo/DCP_6001.JPG</Url>
  </Robot>
</Robots>
En dit is mijn voorlopige code:
Code:
Imports System.Xml
Public Class Frm_main
    Private Sub Frm_main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Dim xml As New XmlDocument
            Dim nodelist As XmlNodeList
            Dim node As XmlNode
            xml.Load("D:\robot.xml")
            nodelist = xml.SelectNodes("Robots/Robot")
            For Each node In nodelist
                Dim node1 = node.SelectSingleNode("Naam").InnerText
                ListBox1.Items.Add(node1)
            Next
        Catch ex As Exception
        End Try
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Try
            Dim xml As New XmlDocument
            xml.Load("D:\robot.xml")
            Dim node01 = xml.SelectSingleNode("Robots/Robot[@Naam='" & ListBox1.SelectedItem & "']/Naam").InnerText
            Dim node02 = xml.SelectSingleNode("Robots/Robot[@Naam='" & ListBox1.SelectedItem & "']/Info").InnerText
            Dim node03 = xml.SelectSingleNode("Robots/Robot[@Naam='" & ListBox1.SelectedItem & "']/Url").InnerText
            Lbl_naam.Text = node01
            Lbl_info.Text = node02
            PictureBox1.ImageLocation = node03
        Catch ex As Exception
            MsgBox("Foutmelding. Server is bezig. Probeer over enkele minuten weer. Foutmelding:" & ex.ToString, MsgBoxStyle.Critical, "Foutmelding")
        End Try
    End Sub
 End Class
Groeten pascallino
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan