German XML Read und Exit Sub

kaplanerkan

Member
Licensed User
Longtime User
Hallo,

ich versuche gerade ein kleines Program schreiben, das von einer XML-Datei etwas liest und vergleicht. Wenn er gefunden hat, muss er aus der Schleife raus. Es bestimmt ganz einfach aber ich habe bis jetzt Lösung gefunden.

Hier ist der Abschnit.

B4X:
Sub Process_Globals
   Dim XMLparser As SaxParser
End Sub

Sub Globals
   Dim Nummer, Passwort As String
End Sub

Sub Activity_Create(FirstTime As Boolean)
   If FirstTime Then
      XMLparser.Initialize
   End If
........
........
End Sub

Sub btn_passwort_OK_Click
   Msgbox (tb_passwort.Text, "Information")
      Dim in As InputStream
      in = File.OpenInput(File.DirAssets, "daten.xml")
      XMLparser.Parse(in, "Parser")
      in.Close
End Sub

Sub Parser_EndElement (Uri As String, Name As String, Text As StringBuilder)
   If XMLparser.Parents.IndexOf("row") > -1 Then
      
      If Name = "Nummer" Then
         Nummer = Text.ToString      ' Nummer=1
      Else If Name = "Passwort" Then
         Passwort = Text.ToString     ' Passwort= 12345
         If  Passwort = tb_passwort.Text Then
            Msgbox ("Passwort ist richtig", "Information")
                               ' exit sub     HIER GEHT NICHT
                               ' exit           GEHT AUCH NI'CHT
'         Else
'            Msgbox ("Passwort ist falsch", "Information")
         End If
      End If
   End If
   
End Sub

Nummer und Passwörter werden ohne Probleme verglichen und kontroliert ob richtige Passwort eingegeben ist. Mein Problem ist, wenn Passwort richtig ist, er soll ein EXIT machen. Wie kann ich es realisieren?


danke im Voraus
erkaN
 

kaplanerkan

Member
Licensed User
Longtime User
Hallo Klaus,

danke erstmal für die schnelle Antwort.

Ein "Return" geht leider auch nicht...Er liest ganze "daten.xml" Datei weiter obwohl er richtiges Passwort gefunden hat.

XML Datei sieht so aus:
B4X:
<row>
     <Nummer>1</Nummer>
     <Passwort>12345</Paswort>
</row>
<row>
     <Nummer>2</Nummer>
     <Passwort>222</Passwort>
</row>
<row>
     <Nummer>3</Nummer>
     <Passwort>333</Passwort>
</row>
<row>
     <Nummer>4</Nummer>
     <Passwort>444</Passwort>
</row>
<row>
     <Nummer>5</Nummer>
     <Passwort>555</Passwort>
</row>
<row>
     <Nummer>6</Nummer>
     <Passwort>666</Passwort>
</row>
<row>
     <Nummer>7</Nummer>
     <Passwort>777</Passwort>
</row>


und Parser;


Wenn ich zb. als Passwort "222" eingebe und ENTER drücke, muss er normalerweise nach 2. Lauf aussteigen. Aber Program läuft weiter, und list den Rest von XML-Datei immernoch. Das möchte ich aber nicht.

Hast du eine andere Idee?


danke
erkaN
 

Kiffi

Well-Known Member
Licensed User
Longtime User
ich würd's so machen:

B4X:
Sub Globals
    Dim Nummer, Passwort As String
    Dim PasswortIsRichtig As Boolean
End Sub

Sub Parser_EndElement (Uri As String, Name As String, Text As StringBuilder)
 [...]
  If Passwort = tb_passwort.Text Then
    PasswortIsRichtig = True
  End If
 [...]
End Sub

Sub btn_passwort_OK_Click

  Msgbox (tb_passwort.Text, "Information")
  
  PasswortIsRichtig = False

  Dim in As InputStream
  in = File.OpenInput(File.DirAssets, "daten.xml")
  XMLparser.Parse(in, "Parser")
  in.Close

  If PasswortIsRichtig = True Then
    Msgbox ("Passwort ist richtig", "Information")
  Else
    Msgbox ("Passwort ist falsch", "Information")
  End If

End Sub

Also PasswortIsRichtig erst nach dem SAX-Lauf testen.

Grüße ... Kiffi
 

kaplanerkan

Member
Licensed User
Longtime User
ich würd's so machen:

Also PasswortIsRichtig erst nach dem SAX-Lauf testen.

Grüße ... Kiffi

Bingooo...
Jetzt scheit richtig zu laufen, denn MsgBox meldet nur einmal Erfolgmessage, wenn ich richtiges Passwort eingeben...

Danke für den Tip.


gruss
erkaN
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…