2017-09-21 2 views
0

Ich habe einen TCP-Server in Python, die haben XML-Dokumente zu senden, in Strings wie folgt aus:Wie kann ich einen benutzerdefinierten Deserializer für TcpNetClientConnectionFactory erstellen?

<MSG_IVEF><Header MsgRefId="" Version="0.2.5">{1,1}</Header><Body>{1,1}</Body></MSG_IVEF> 

Und ich habe TCP Client, mit Frühlings-Integration, umgesetzt mit einem TcpNetClientConnectionFactory und ich brauche ein setzen benutzerdefinierter Deserializer zum Lesen auf dem TCP.

Wie kann ich eine benutzerdefinierte wie die ByteArrayStxEtxSerializer machen? Zum Beispiel, wenn ich dasselbe aber mit <MSG_IVEF> und </MSG_IVEF> haben möchte?

Antwort

0

Nun, da es ein XML ist, würde ich nicht auf die ByteArrayStxEtxSerializer Logik schauen. Weil Ihr MSG_IVEF ein Stamm-Tag des XML-Dokuments ist und STX/ETX Bytes nach der Deserialisierung von der Zielnachricht ausgeschlossen werden. Sie möchten auf keinen Fall Root-Tags in Ihrem Dokument verlieren.

Nicht sicher, was das Problem auf Ihrem Client und Server ist, das Senden des XML-Dokuments mit einem Standardtrennzeichen abzuschließen, wie über ByteArrayCrLfSerializer bereitgestellt. Es gibt auch ByteArraySingleTerminatorSerializer, die mit beliebigen Byte zu Delimiter-Paketen auf der Leitung angepasst werden können.

+0

Sie haben Recht, ich möchte Root-Tag in meinem Dokument nicht verlieren. Es gibt kein Problem, XML mit Standardtrennzeichen (CRLF) oder mit anderen zu senden, aber ich kann den Server nicht konfigurieren, die endgültige Federanwendung muss mit dem Trennzeichen konfiguriert werden, also auf der Clientseite. – user7953086

Verwandte Themen