XML formatı üzerinde kontrolünüz varsa, sorunu tersine çevirmelisiniz. İkili XML eklemek yerine, biri XML içeren birden çok parçaya sahip bir belgeyi nasıl kapatacağınızı düşünmelisiniz.
Bunun geleneksel çözümü bir arşivdir (örn. Tar). Ancak, çevreleyen belgenizi metin tabanlı bir biçimde tutmak istiyorsanız veya bir dosya arşivleme kitaplığına erişiminiz yoksa, e-posta ve HTTP'de yoğun olarak kullanılan ve çok parçalı / * MIME olan standartlaştırılmış bir şema da vardır. Content-Transfer-Encoding: ikili .
Örneğin, sunucularınız HTTP üzerinden iletişim kuruyorsa ve çok parçalı bir belge göndermek istiyorsanız, birincil belge ikili veriye atıfta bulunan XML belgesidir, HTTP iletişimi aşağıdaki gibi görünebilir:
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--
Yukarıdaki örnekte olduğu gibi, XML cid
, Content-Id başlığının bir tanımlayıcısı olan bir URI şeması kullanarak çevreleyen çok parçadaki ikili verilere atıfta bulunur . Bu şemanın ek yükü sadece MIME başlığı olacaktır. Benzer bir şema, HTTP yanıtı için de kullanılabilir. Elbette HTTP protokolünde, çok parçalı bir belgeyi ayrı istek / yanıta gönderme seçeneğiniz de vardır.
Verilerinizi çok parçalı olarak sarmamaktan kaçınmak istiyorsanız, veri URI'si kullanmaktır:
<myxml>
<data href="data:application/something;charset=utf-8;base64,dGVzdGRhdGE="/>
</myxml>
Ancak bunun base64 ek yükü var.