document.ReadInnerXml bricht While (document.Read()) Schleife ab.

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Freestyler100.

    document.ReadInnerXml bricht While (document.Read()) Schleife ab.

    Hallo Community,
    ich habe daten aus einer datei ausgelesen und darüber aus einer anderen datei nochmal allerdings wird beim 1 immer die while schleife die durch die reihen loopt abgebrochen wenn ich den inhalt auslese :/
    Hier der code der funktioniert:

    VB.NET-Quellcode

    1. Private Function loadSettings()
    2. MainOfElement = ""
    3. Try
    4. If Not (System.IO.File.Exists(strPath & "\Settings.xml")) Then
    5. Return False
    6. End If
    7. Dim document As System.Xml.XmlReader = New System.Xml.XmlTextReader(strPath & "\Settings.xml")
    8. While (document.Read())
    9. MsgBox(document.Name)
    10. Dim type = document.NodeType
    11. If (type = System.Xml.XmlNodeType.Element) Then
    12. If (document.Name.Contains("_c")) Then
    13. MainOfElement = document.Name.Replace("_c", "")
    14. Continue While
    15. End If
    16. If (MainOfElement = "") Then
    17. Continue While
    18. End If
    19. For j As Integer = 0 To lstSettings.Count - 1
    20. If (MainOfElement = lstSettings(j).group) Then
    21. If (document.Name = lstSettings(j).name) Then
    22. Dim rinn As String = document.ReadInnerXml.ToString()
    23. lstSettings(j).state = Boolean.Parse(rinn)
    24. Exit For
    25. End If
    26. End If
    27. Next
    28. End If
    29. End While
    30. document.Dispose()
    31. Return True
    32. Catch ex As Exception
    33. MsgBox("Error while loading settings" & vbNewLine & ex.Message, MsgBoxStyle.OkOnly, "Loading Settings")
    34. Return False
    35. End Try
    36. End Function


    und jetzt die 2 funktion die immer abbricht wenn ich document.readInnerXml aufrufe

    VB.NET-Quellcode

    1. Private Function loadUserdata()
    2. Try
    3. If Not (System.IO.File.Exists(strPath & "\Userdata.xml")) Then
    4. Return False
    5. End If
    6. Dim document As System.Xml.XmlReader = New System.Xml.XmlTextReader(strPath & "\Userdata.xml")
    7. While (document.Read())
    8. MsgBox(document.Name)
    9. Dim type = document.NodeType
    10. If (type = System.Xml.XmlNodeType.Element) Then
    11. For i As Integer = 0 To lstData.Count - 1
    12. If Not (document.Name = lstData(i).name) Then
    13. Dim rinn As String = document.ReadInnerXml.ToString()
    14. lstData(i).textbox.Text = lstData(i).name
    15. 'Help!!!
    16. 'No Error || While ends
    17. End If
    18. Next
    19. End If
    20. End While
    21. document.Dispose()
    22. Return True
    23. Catch ex As Exception
    24. MsgBox("Error while loading userdata" & vbNewLine & ex.Message, MsgBoxStyle.OkOnly, "Loading userdata")
    25. Return False
    26. End Try
    27. End Function


    Wo liegt bitte mein Fehler die Cod's sind doch eig identisch aufgebaut also... und wieso wird die funktion nur beendet wenn ich document.readInnerXml benutze?
    Also es gibt keinen Fehler (hab das mit try and catch umklammer und ausgeben lassen mit msg(ex)) die while schleife wird einfach nur beendet :/

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Freestyler100“ ()

    du sprichst von Funktionen - ich sehe gar keine Funktionen.

    Da sind nur ein paar lose Zeilen - besser wärs, du würdest richtige Funktionen posten, mit Anfang und Ende.

    Wenn eine Methode einfach mittendrin den Geist aufgibt, liegt das meist daran, dass sie im Startup ausgeführt wird (kann man hier ja nicht wissen, es ist ja gar keine Funktion zu sehen).

    Also wenn du mal eine Funktion hast, führe sie nicht im Startup aus, sondern rufe sie per Button-Click auf.
    Dann kriegst du auch erhellende Fehlermeldungen.
    Ich würde dir empfehlen entweder XDocument zum parsen von XML-Dateien zu nehmen oder deine XML in einer Klasse nachzubauen und dann mit einen Deserializer arbeiten, das erspart dir auf lange Sicht Zeit und es ist weniger Fehleranfällig.
    Ok tut mir leid dann habe ich die beiden codeblöcke mal durch die beiden Funktionen ersetzt. Ja, ich fühe beide Funktionen in der FormLoad methode aus. Wenn ich es per button bricht die erste funktion immernoch ab :/ (ohne error) Ich hab echt keine ahnung wieso weil die code's Sind ja eig gleich aufgebaut und die xml datein auch :(

    Grüße Niklas