xml auslesen, am Anfang ein Leerzeichen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Hugoo00.

    xml auslesen, am Anfang ein Leerzeichen

    Hallo,

    mit folgenem code wird eine XML ausgelesen aus einer ZIP

    VB.NET-Quellcode

    1. .....
    2. Using Reader As Xml.XmlReader = New Xml.XmlTextReader(entry.Open())
    3. With Reader
    4. Do While .Read
    5. Select Case .NodeType
    6. Case Xml.XmlNodeType.Element
    7. ......

    "entry" ist die Datei ausm ZipArchiv
    es funktioniert ja auch wunderbar, außer wenn eine xml am anfang ein Leerzeichen hat dann bricht es ab bei .Read
    hat da wer eine Idee, bei einer Zeichenkette hätt ich gesagt trim nehmen aber bei einer Datei hmm
    Gruß
    Hugoo00

    Hugoo00 schrieb:

    außer wenn eine xml am anfang ein Leerzeichen hat
    Poste bitte mal eine solche XML-Datei.
    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!

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8" standalone="no" ?>
    2. <modDesc descVersion="9">
    3. <author>der autor</author>
    4. <title>
    5. <en>english</en>
    6. <de>deutsch</de>
    7. <fr>französisch</fr>
    8. </title>
    9. </modDesc>


    hatte das getestet wenn man die zip per hand entpackt und in der xml das Leerzeichen entfernt neben <? , dann wieder packt wird sie ohne probleme ausgelesen, sofern aber man wieder das Leerzeichen rein haut gehts nicht, das Problem ist nur habe auf die zip bzw. den inhalt die xml kein einfluss.

    Hugoo00 schrieb:

    ist die Datei ausm ZipArchiv
    Sorry, das ist mir entfleucht.
    Vielleicht entpackst Du zunächst die Datei in das temporäre Verzeichnis und behandelst sie als normale XML-Datei?
    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!

    Hugoo00 schrieb:

    gehts nicht
    OK.
    Der XmlTextReader ist offensichtlich sehr pingelig, wenn es um die syntax der zu lesenden XML-Datei geht, er gibt ja einen expliziten Fehler zurück:

    Und da Du weißt, wo der Fehler herkommt, kannst Du ihn ja explizit rausmachen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim xx = New List(Of String)
    3. For Each line In IO.File.ReadLines("C:\Temp\Test.xml")
    4. xx.Add(line.Trim)
    5. Next
    6. IO.File.WriteAllLines("C:\Temp\Test.xml", xx.ToArray)
    7. Using Reader As Xml.XmlReader = New Xml.XmlTextReader("C:\Temp\Test.xml")
    8. With Reader
    9. Do While .Read
    10. Select Case .NodeType
    11. Case Xml.XmlNodeType.Element
    12. Case Else
    13. End Select
    14. Loop
    15. End With
    16. End Using
    17. End Sub
    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!
    da es teilweise mehr als 100 zips sein können hab ich das anders gelöst als die datei im Temp neu zu erstellen

    und zwar der stream "entry" wird vor dem xmlTextReader dem Streamreader(entry.Open()) übergeben dort wird die datei ausgelesen und getrimmt und der getrimmte string wird dem xmlTextReader als new StringReader(XML) übergeben