String encodieren nach XML-Import

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von vg2000.

    String encodieren nach XML-Import

    Hallo in die Runde,

    ich habe das Problem, dass ein aus einer XML-Datei importierter Textblock teilweise nach dem Import in eine String-Variable nicht korrekt dargestellt wird.
    Es geht nur um die Zeilenumbrüche. Diese werden in der XML-Datei als "
" dargestellt.

    Eine einfache msgbox(string) stellt den Textblock korrekt dar, aber die Ausgabe in eine PDF-Datei über
    e.Graphics.DrawString(string, StdFontSmall, ...) ignoriert diese Umbrüche und gibt mir nur eine einzige Zeile aus, die
    am Seitenrand abgeschnitten wird.

    Kennt jemand das Problem und evtl. eine Lösung dafür?
    Bin ich mit dem Thema "encoding" auf dem richtigen Pfad?

    Bin für Tipps sehr dankbar.
    Viele Grüße
    VG2000

    vg2000 schrieb:

    Diese werden in der XML-Datei als "
" dargestellt.
    Da scheint was anderes im Argen.
    Poste mal die komplette XML-Datei (nicht deren Inhalt) als ZIP.
    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!
    Danke. Mit allen Werten funktioniert der Import problemlos.
    Auch alle Inhalte der XML kann ich korrekt einlesen.
    Die problematischen Positionen sind im Knoten <Comment> zu finden.
    Auszug der XML als Anhang.
    Dateien
    • Q49674-5_test.xml

      (3,6 kB, 194 mal heruntergeladen, zuletzt: )
    Jo, in dem Comment sind glaub alle verschiedene ZeilVorschub-Codes, die's gibt, durcheinandergewürfelt.
    Also grundsätzlich gibts 2 ZeilVorschub-Zeichen: \n und \r. Und auf verschiedenen Systemen ist mal das eine, mal das andere, mal beide in einer Reihenfolge, mal beide in anderer Reihenfolge gültig, und manche Systeme verstehen die Codes auch anderer Systeme, und manche Controls verstehen, was Windows nicht versteht - also ist erstaunlich, wieviel Wirrsal so ein Winz-Detail anrichten kann, wenn iwie nicht gescheit genormt ist.

    Jdfs folgender Code macht aus beliebiger Norm die Norm des aktuellen Betriebssystems:

    VB.NET-Quellcode

    1. Dim xmlString = xDoc.<QED>.<Comment>.First().Value
    2. dim str = System.Text.RegularExpressions.Regex.Replace(xmlString, "\r\n|\n\r|[\n\r]", Environment.NewLine)
    wobei xDoc ein XDocument ist, was die Datei geladen hat.