German xml parsen mehrfach namen

friedelsoft

New Member
Licensed User
Longtime User
hallo leute
bin neu hier und habe auch gleich ein problem.
Ich habe eine xml datei geöffnet, und wollte nun die einträge abfragen.
Nun habe ich folgendes Problem, die daten haben immer die selbe überschrift. wenn ich nun folgende befehle aufrufe

If parser.Parents.IndexOf("kunde") > -1 Then
If Name = "Vorname" Then Label7.Text = Text.ToString
If Name = "Nachname" Then Label8.Text = Text.ToString
end if

If parser.Parents.IndexOf("kunde") > -1 Then
If Name = "Vorname" Then Label9.Text = Text.ToString
If Name = "Nachname" Then Label10.Text = Text.ToString
end if

wird in Label 7 und 9 jeweils Max und in Label 8 und 10 Mustermann angezeigt. Ich habe schon sehr viel im Forum gesucht aber leider nichts passendes gefunden. kann mir jemand da weiter helfen.

die xml datei sieht so aus

- <kunde>
<Vorname>Max</Vorname>
<Nachname>Mustermann</Nachname>
</kunde>
- <kunde>
<Vorname>Lisa</Vorname>
<Nachname>Mustermann</Nachname>
</kunde>
 

Kiffi

Well-Known Member
Licensed User
Longtime User
Hallo,

ich würde während des Parsens eine Liste befüllen und erst nach dem
Parsen die Werte in die Labels eintragen:

B4X:
Sub Process_Globals
End Sub

Sub Globals

   Dim lblVorname1 As Label
   Dim lblNachname1 As Label

   Dim lblVorname2 As Label
   Dim lblNachname2 As Label

   Dim Sax As SaxParser

   Type tKunde (Vorname As String, Nachname As String)
   
   Dim Vorname As String
   Dim Nachname As String

   Dim KundenListe As List

End Sub

Sub Activity_Create(FirstTime As Boolean)

   lblVorname1.Initialize("lblVorname1")
   lblNachname1.Initialize("lblNachname1")

   lblVorname2.Initialize("lblVorname2")
   lblNachname2.Initialize("lblNachname2")

   Activity.AddView(lblVorname1,  0dip,   0dip, 500dip, 40dip)
   Activity.AddView(lblNachname1, 0dip,  45dip, 500dip, 40dip)

   Activity.AddView(lblVorname2,  0dip, 100dip, 500dip, 40dip)
   Activity.AddView(lblNachname2, 0dip, 145dip, 500dip, 40dip)

   KundenListe.Initialize

   Dim Xml As StringBuilder
   Xml.Initialize
   Xml.Append("<kunden>")
   Xml.Append("<kunde>")
   Xml.Append("<Vorname>Max</Vorname>")
   Xml.Append("<Nachname>Mustermann</Nachname>")
   Xml.Append("</kunde>")
   Xml.Append("<kunde>")
   Xml.Append("<Vorname>Lisa</Vorname>")
   Xml.Append("<Nachname>Mustermann</Nachname>")
   Xml.Append("</kunde>")
   Xml.Append("</kunden>")

   Dim myInputStream As InputStream
   myInputStream.InitializeFromBytesArray(Xml.ToString.GetBytes("UTF8"), 0, Xml.ToString.GetBytes("UTF8").Length)
   
   Sax.Initialize
   Sax.Parse(myInputStream, "Sax")

End Sub

Sub Sax_EndElement (Uri As String, Name As String, Text As StringBuilder)

   Dim Kunde As tKunde
   
   If Sax.Parents.IndexOf("kunde") > -1 Then
   
      Select Case Name
         Case "Vorname" 
            Vorname  = Text.ToString 
         Case "Nachname" 
            Nachname = Text.ToString 
      End Select
      
   End If

   Select Case Name
   
      Case "kunde"
      
         Kunde.Vorname = Vorname
         Kunde.Nachname = Nachname
         KundenListe.Add(Kunde)
         
         Vorname = "" : Nachname = ""
         
      Case "kunden"

         Kunde = KundenListe.Get(0)
         lblVorname1.Text=Kunde.Vorname
         lblNachname1.Text=Kunde.Nachname

         Kunde = KundenListe.Get(1)
         lblVorname2.Text=Kunde.Vorname
         lblNachname2.Text=Kunde.Nachname

   End Select

End Sub

Grüße ... Kiffi
 

friedelsoft

New Member
Licensed User
Longtime User
Hallo Kiffi :sign0142:

Vielen Dank für die schnelle hilfe. Funktioniert echt super
:wav:
 
Top