Jika Anda memiliki kendali atas format XML, Anda harus membalikkan masalahnya. Daripada melampirkan XML biner, Anda harus memikirkan tentang cara melampirkan dokumen yang memiliki banyak bagian, salah satunya berisi XML.
Solusi tradisional untuk ini adalah arsip (mis. Tar). Tetapi jika Anda ingin menyimpan dokumen terlampir Anda dalam format berbasis teks atau jika Anda tidak memiliki akses ke perpustakaan pengarsipan file, ada juga skema standar yang banyak digunakan dalam email dan HTTP yang multipart / * MIME dengan Content-Transfer-Encoding: biner .
Misalnya jika server Anda berkomunikasi melalui HTTP dan Anda ingin mengirim dokumen multibagian, yang primer adalah dokumen XML yang merujuk ke data biner, komunikasi HTTP mungkin terlihat seperti ini:
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--
Seperti dalam contoh di atas, XML merujuk ke data biner dalam multi bagian yang melingkupi dengan menggunakan cid
skema URI yang merupakan pengenal untuk header Content-Id. Overhead skema ini hanya akan menjadi header MIME. Skema serupa juga dapat digunakan untuk respons HTTP. Tentu saja dalam protokol HTTP, Anda juga memiliki opsi untuk mengirim dokumen multi bagian ke dalam permintaan / tanggapan terpisah.
Jika Anda ingin menghindari penggabungan data Anda dalam multi bagian adalah dengan menggunakan URI data:
<myxml>
<data href="data:application/something;charset=utf-8;base64,dGVzdGRhdGE="/>
</myxml>
Tapi ini memiliki overhead base64.