Glengamoi · AspHeute (Artikel) · .NET Heute (RSS-Suche) · .NET Blogs · Glengamoi Suche (Installieren via Klick)

Glengamoi

Die Diskussionsforen der deutschen .NET Community
Willkommen bei Glengamoi. Anmeldung | Registrieren | Hilfe
in Suchen

Zeilenumbruch MAC/UNIX/DOS

Letzter Beitrag 02-01-2007 13:05 von Claudius Ceteras. 3 Antworten.
Seite 1 von 1 (4 Treffer)
Beiträge sortieren: Zurück Weiter
  • 02-01-2007 11:41

    Zeilenumbruch MAC/UNIX/DOS

    Hallo Liste,

     ich habe einen Webservice, der über TCP/IP ein HL7-Kommando absetzt. Dieses Kommando muss (!) MAC Zeilenumbrüche enthalten. Nun lese ich das Kommando aus einer XML-CDATA-Section aus einem UTF-8 enkodierten Dokument aus:

    <query><![CDATA[MSH|^~ \|blabla|blabla||||<%Klinik%>^<%Anforderer%>^<%IP%>|QRY^A19|<%Klinik%>^xxxx<%FallNr%>|P|2.2
    QRD|<%Timestamp%>|R|I||||1^RD|<%FallNr%>|APA|PER|xxxxx
    QRF]]></query>

    Wenn ich das Kommando als String aulese mit xmlRoot.SelectSingleNode("query").FirstChild.Value um es über den Service rauszuschicken, schlägt der Aufruf fehl, da  der String nun UNIX Zeilenumbrüche hat.

     Wie bekomme ich da MAC Zeilenumbrüche hin?

    Gruß

    Tobias


     

    • IP-Adresse ist Registriert
  • 02-01-2007 12:15 Antwort zu

    RE: Zeilenumbruch MAC/UNIX/DOS

    > ich habe einen Webservice, der über TCP/IP ein HL7-Kommando

    Keine Ahnung was HL7 bedeutet. Hoffe es betrifft nicht das Problem direkt.

    > absetzt. Dieses Kommando muss (!) MAC Zeilenumbrüche

    [..]

    > Wenn ich das Kommando als String aulese mit
    > xmlRoot.SelectSingleNode("query").FirstChild.Value um es über
    > den Service rauszuschicken, schlägt der Aufruf fehl, da der
    > String nun UNIX Zeilenumbrüche hat.

    Und das ist genau das richtige Verhalten.
    Ich hatte das Problem auch schon als ich vor Jahren durch Windows-Umbrüche
    getrennte Daten per XML vreschicken wollte und auf der anderen Seite sollten
    sie wieder gesplittet werden.
    Jeder XML-Parser sollte Windows- und Mac-Umbrüche zu Unix-Umbrüchen
    normalisieren:
    http://www.w3.org/TR/xml/#sec-line-ends

    Wenn Du auf bestimmte Umbrüche im Text angewiesen bist, bleibt Dir nichts
    anderes als die entsprechenden Daten als BASE64-kodierte Binärdaten zu
    schicken.
    Oder generierst und parst das XML selbst.


    Claudius
    • IP-Adresse ist Nicht registriert
  • 02-01-2007 12:35 Antwort zu

    AW: Zeilenumbruch MAC/UNIX/DOS

    Hallo,

    schon mal Danke für Deine Hilfe!

    >Keine Ahnung was HL7 bedeutet. Hoffe es betrifft nicht das Problem direkt.

    http://de.wikipedia.org/wiki/HL7

    >Und das ist genau das richtige Verhalten.
    >Ich hatte das Problem auch schon als ich vor Jahren durch Windows-Umbrüche
    getrennte Daten per XML vreschicken wollte und auf der anderen Seite sollten
    sie wieder gesplittet werden.
    >Jeder XML-Parser sollte Windows- und Mac-Umbrüche zu Unix-Umbrüchen
    normalisieren:
    >http://www.w3.org/TR/xml/#sec-line-ends

    >Wenn Du auf bestimmte Umbrüche im Text angewiesen bist, bleibt Dir nichts
    anderes als die entsprechenden Daten als BASE64-kodierte Binärdaten zu
    schicken.
    >Oder generierst und parst das XML selbst.

    Es hat mich nur sehr verwundert, dass es funktioniert, wenn ich das Query
    aus einer txt-Datei mit MAC Umbrüchen auslese mit:

    Private Function readHL7Query(ByVal FiName As String) As String
    Try
    Dim fs As System.IO.FileStream = New
    System.IO.FileStream(FiName, System.IO.FileMode.Open,
    System.IO.FileAccess.Read)
    Dim br As System.IO.BinaryReader = New
    System.IO.BinaryReader(fs)
    Dim bArr() As Byte = br.ReadBytes(fs.Length)
    Dim enc As New System.text.UTF8Encoding
    readHL7Query = enc.GetString(bArr)
    br.Close()
    fs.Close()
    Catch ex As Exception
    addError(ex.Message)
    End Try
    End Function

    Und /r als Umbruch in der XML-Datei hilft mir auch nicht weiter?

    Gruß,
    Tobias
    • IP-Adresse ist Nicht registriert
  • 02-01-2007 13:05 Antwort zu

    RE: Zeilenumbruch MAC/UNIX/DOS

    > >Wenn Du auf bestimmte Umbrüche im Text angewiesen bist,
    > bleibt Dir nichts
    > anderes als die entsprechenden Daten als BASE64-kodierte Binärdaten zu
    > schicken.
    > >Oder generierst und parst das XML selbst.
    >
    > Es hat mich nur sehr verwundert, dass es funktioniert, wenn
    > ich das Query
    > aus einer txt-Datei mit MAC Umbrüchen auslese mit:

    Das mag ja sein, aber wenn es einen bestimmten Zeilenumbruch erwartet, würde
    ich es als Binärformat ansehen und entsprechend behandeln

    Alles was in XML gepackt wird, wird als Text angenommen und auch so
    behandelt - da sollten alle Zeilenumbrüche verarbeitet werden können, wenn
    es um Interoperabilität zwischen verschiedenen Systemen geht.

    Wenn Du auch die Gegenseite kontrollierst, kannst Du vor der
    Weiterverarbeitung alle Unix-Umbrüche durch Mac-Umbrüche ersetzen.

    Falls nicht, solltest Du die Entwickler der Gegenseite auf ihren Fehler
    aufmerksam machen und sie drum bitten entweder beim Empfang die Umbrüche zu
    ersetzen, oder BASE64-enkodierte Inhalte anzunehmen.

    Einen eigenen XML-Parser oder -Generator würde ich nicht empfehlen, da der
    nicht standardkonform wäre.


    Claudius
    • IP-Adresse ist Nicht registriert
Seite 1 von 1 (4 Treffer)