Wenn Sie die Kontrolle über das XML-Format haben, sollten Sie das Problem auf den Kopf stellen. Anstatt das binäre XML anzuhängen, sollten Sie darüber nachdenken, wie Sie ein Dokument mit mehreren Teilen einschließen, von denen einer XML enthält.
Die traditionelle Lösung hierfür ist ein Archiv (z. B. Teer). Aber wenn Sie Ihre einschließende Dokument in einem textbasierten Format behalten möchten oder wenn Sie Zugriff auf eine Datei nicht Bibliothek Archivierung haben, gibt es auch ein standardisiertes Schema , das stark in E - Mail verwendet wird und HTTP , die ist multipart / * MIME mit Content-Transfer-Encoding: binär .
Wenn Ihre Server beispielsweise über HTTP kommunizieren und Sie ein mehrteiliges Dokument senden möchten, wobei das primäre ein XML-Dokument ist, das sich auf Binärdaten bezieht, sieht die HTTP-Kommunikation möglicherweise folgendermaßen aus:
POST / HTTP/1.1
Content-Type: multipart/related; boundary="qd43hdi34udh34id344"
... other headers elided ...
--qd43hdi34udh34id344
Content-Type: application/xml
<myxml>
<data href="cid:data.bin"/>
</myxml>
--qd43hdi34udh34id344
Content-Id: <data.bin>
Content-type: application/octet-stream
Content-Transfer-Encoding: binary
... binary data ...
--qd43hdi34udh34id344--
Wie im obigen Beispiel verweist das XML unter Verwendung eines cid
URI-Schemas, das eine Kennung für den Content-ID-Header ist, auf die Binärdaten im umschließenden Multipart . Der Overhead dieses Schemas wäre nur der MIME-Header. Ein ähnliches Schema kann auch für die HTTP-Antwort verwendet werden. Natürlich haben Sie im HTTP-Protokoll auch die Möglichkeit, ein mehrteiliges Dokument in einer separaten Anfrage / Antwort zu senden.
Wenn Sie vermeiden möchten, dass Ihre Daten mehrteilig verpackt werden, verwenden Sie den Daten-URI:
<myxml>
<data href="data:application/something;charset=utf-8;base64,dGVzdGRhdGE="/>
</myxml>
Dies hat jedoch den Base64-Overhead.