Probleme beim XML einlesen DataGridView

  • VB.NET

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

    Probleme beim XML einlesen DataGridView

    Hallo,

    ich lese schon länger hier im Forum mit, jedoch immer nur über die Google Suche. Nun habe ich mich selbst mal angemeldet und hoffe auf eine Lösung für mein Problem.

    Ich habe ein DataTable bzw. ein Datagridview. Die Daten daraus speichere ich über folgenden Code als XML Datei:

    VB.NET-Quellcode

    1. Dim sw As New System.IO.StringWriter()
    2. Dim SaveFileDialog As New SaveFileDialog
    3. SaveFileDialog.FileName = Projektdaten.txtProjektNummer.Text & "_Bauteilliste.xml"
    4. SaveFileDialog.Title = "Bauteilliste speichern unter"
    5. dt_Bauteile.WriteXml(sw)
    6. Dim strInhalt As String = sw.ToString()
    7. If SaveFileDialog.ShowDialog = Windows.Forms.DialogResult.Cancel Then
    8. Exit Sub
    9. End If
    10. Try
    11. FileOpen(1, SaveFileDialog.FileName, OpenMode.Output)
    12. 'PrintLine(1, "<?xml version=" & Chr(34) & "1.0" & Chr(34) & "encoding=" & Chr(34) & "ISO-8859-1" & Chr(34) & "?>" & vbNewLine & strInhalt)
    13. 'PrintLine(1, "<?xml version=" & Chr(34) & "1.0" & Chr(34) & "encoding=" & Chr(34) & "utf-8" & Chr(34) & "?>" & vbNewLine & strInhalt)
    14. PrintLine(1, strInhalt)
    15. FileClose(1)
    16. Catch ex As Exception
    17. MessageBox.Show(Ex.message)
    18. End Try


    Nun habe ich jedoch beim Einlesen der Dateien probleme mit den Umlauten. Wenn ich alle Umlaute herauslösche kann ich die Datei problemlos einlesen:

    VB.NET-Quellcode

    1. Dim OpenFileDialog As New OpenFileDialog
    2. OpenFileDialog.Title = "Bauteilliste öffnen"
    3. Dim result As DialogResult = OpenFileDialog.ShowDialog()
    4. If result = Windows.Forms.DialogResult.OK Then
    5. Dim strPfad As String = OpenFileDialog.FileName
    6. dt_Bauteile.ReadXml(strPfad)
    7. End If


    Leider kommt immer die Fehlermeldung:
    System.Xml.XmlException: "Unerwartetes Token 'encoding'. Erwartet wurde das Token '?>'. Zeile 1, Position 20."

    Mein Gedanke war erst, dass die Codierung mit in der XML Datei stehen muss, jedoch bringt das auch nichts. Also muss es wohl irgendwie am DGV eingestellt werden vermute ich. Ich hoffe, jemand kann mir dazu weiterhelfen.

    *Thema verschoben* ~NoFear23m

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    @NooB Willkommen im Forum. :thumbup:
    Es sieht so aus, als ob der Fehler in der XML-Datei selbst liegt.
    Die erste Zeile muss so etwa aussehen:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>

    Öffne sie im Notepad++ und editiere sie.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @NooB Deine Herangehensweise ist falsch.
    XML-Dateien werden nicht "zu Fuß" geschrieben, sondern mit XmlWriter oder XML-Serialisierung, da macht das das System.
    Und
    Benenne mal diesen Deinen Thread um, das ist nicht C, sondern VB.NET.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    sorry wenn ich blöd frage, aber wie muss der XMLWriter eingebaut werden? Ich dachte durch das

    VB.NET-Quellcode

    1. dt_Bauteile.WriteXml(sw)
    wird automatisch eine korrekte XML Datei erzeugt?

    Wobei
    selbst wenn das in der Datei steht, kann ich sie ja immer noch nicht
    einlesen. Also scheint das DGV noch ein Problem beim Import der Umlaute
    zu haben oder?


    Wegen dem VB.NET: Das hätte ich gerne gemacht, aber das steht gar nicht zur Auswahl... Was mache ich denn da falsch?!

    Habe nur folgendes zur Auswahl:
    - C
    - C++
    - CSS
    - HTML
    - Java
    - JavaScript
    - Perl
    - PHP
    - Python
    - Sonstige
    - SQL

    NooB schrieb:

    Auswahl

    Mach Dir einfach mal ein Testprojekt aus der MSDN.
    docs.microsoft.com/de-de/dotne…ter?view=netframework-4.8
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @NooB
    Hast du schon versucht die DataTable mit Angabe des Dateinamens zu speichern? Also ohne StringWriter und VB6-Gedöns.

    VB.NET-Quellcode

    1. Dim SaveFileDialog As New SaveFileDialog
    2. SaveFileDialog.Title = "Bauteilliste speichern unter"
    3. SaveFileDialog.FileName = Projektdaten.txtProjektNummer.Text & "_Bauteilliste.xml"
    4. If SaveFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
    5. dt_Bauteile.WriteXml(SaveFileDialog.FileName)
    6. End If