tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1311
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Hallo zuasmmen.

    Ich hoffe ich bin mit dem Thema im richtigen Forum. Könnte genauso gut in Handy, PDA (wegen der Kommunikation mit solch einem Gerät) oder in .NET Kommunikation. Bitte verschieben falls ich hier falsch bin!

    Also:
    Ich serialisiere mit dem XML-Serialzer ein Objekt. Dieses enthalt ausschließlich Strings als Attribute. Nun enthalten mehrere dieser Strings Zeilenumbrüche. Leider werden diese auf der anderen Seite (Windows CE) nicht richtig übersetzt.

    Das wirkt sich folgendermaßen aus:
    Ich sende:
    Code vbnet:
    1
    
    "a" & ControlChars.CrLf & "a"
    Das ganze wird auch wunderbar in ein Byte-Array gewandelt und über das Netz geschickt. Auf der anderen Seite angekommen und Deserialisiert kann ich allerdings kein CrLf mehr finden, sondern nurnoch einen Lf.

    Nun dachte ich, statt die Zeilenumbrüche direkt zu senden, nutze ich diese htmlentities (weiß nich ob die hier auch so heißen):
    Code vbnet:
    1
    2
    3
    
        Private Function replaceForXML(ByVal str As String) As String
            Return str.Replace(ControlChars.CrLf, "
")
        End Function
    Der lustige Effekt: Das & der einzelnen Anweisungen wird in & gewandelt. Dadurch wird natürlich wieder nur müll Übertragen und kein Zeilenumbruch.

    Wie bekomme ich es hin, dass der CrLf auch einer bleibt?
    Werde das noch genauer untersuchen an welcher Stelle es hapert...

    Aber eventuell hat mit den bisherigen Infos ja schon jemand eine Idee?

    Gruß
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Laut XML Standard wird das Zeilenende in XML Dokumenten durch das Zeichen LF markiert. Da hat sich diesmal sogar Microsoft dran gehalten.

    D.h. wenn ein XML Parser ein Dokument liest, dann werden automatisch alle anderen Zeilenendemarkierungen (CR bzw. CRLF) im Zuge der Normalisierung in LF konvertiert.

    Wie man CharEntities in XML Dokumente einfügt, hatten wir ja schonmal => http://www.tutorials.de/forum/net-da...-entities.html

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Achso - na das erklärt einiges. Danke

    Das mit den CharEntities ist so eine Sache. Ich habe ja ein Objekt, welches ich mit dem XMLSerializer in eine XML-Struktur wandel. Daher müsste ich dem das ja irgendwie mitgeben das er nen Zeilenumbruch automatisch umwandelt?

    Oder ich machs noch anders und bastel mir die CrLf aus den Lf in den einzelnen Strings wieder zusammen. Das wär sicher die schnellste methode?

    Gibts auch eine Möglich über Annotations (ka wie die bei Microsoft heißen) den einzelnen Properties informationen zu der XML-Serialisierung bezüglich Zeilenumbrüchen mitzugeben?

    Gruß
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Klein0r Beitrag anzeigen
    Oder ich machs noch anders und bastel mir die CrLf aus den Lf in den einzelnen Strings wieder zusammen. Das wär sicher die schnellste methode?
    Das wäre sicherlich das einfachste.
    Zitat Zitat von Klein0r Beitrag anzeigen
    Gibts auch eine Möglich über Annotations (ka wie die bei Microsoft heißen) den einzelnen Properties informationen zu der XML-Serialisierung bezüglich Zeilenumbrüchen mitzugeben?
    Nein, für Zeilenumbrüche gibt es keine Option bei den .NET XML Serialisierungs-Attributen. Aber du könntest versuchen die Daten in eine CDATA Sektion zu speichern. Siehe z.B. http://geekswithblogs.net/cmartin/ar.../30/61705.aspx

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Danke für den Tipp mit dem CDATA.
    Hatte ich auch schon überlegt - aber irgendwie hab ich da nix zu gefunden.

    Werd ich Dienstag morgen direkt probieren - heut komm ich da nicht mehr zu

    Gruß und schonmal frohe Ostern
     

  6. #6
    Avatar von Klein0r
    Klein0r Klein0r ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Ort
    Paderborn
    Beiträge
    718
    Damti das Thema hier auch abgehakt wird.
    Einfach im String die Lf durch CrLf ersetzen.
    So funktionierts bei mir auf jeden fall

    Ohne CDATA - was aber sicher auch ne Lösung wär...
    Code vbnet:
    1
    
    textbox.text = stringAusXML.Replace(ControlChars.Lf, ControlChars.CrLf)
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 26.01.08, 14:59
  2. LangResource Strings - Zeilenumbruch wird ignoriert.
    Von Christian Kusmanow im Forum .NET Application und Service Design
    Antworten: 2
    Letzter Beitrag: 08.11.05, 11:37
  3. Abfrage wird falsch umgesetzt
    Von PHP-Fan im Forum PHP
    Antworten: 4
    Letzter Beitrag: 18.10.05, 17:23
  4. Datei wird ohne Zeilenumbruch eingelesen
    Von cesupa im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 12.09.05, 15:05
  5. Antworten: 2
    Letzter Beitrag: 19.12.04, 12:02