Si tiene control sobre el formato XML, debería darle la vuelta al problema. En lugar de adjuntar el XML binario, debería pensar en cómo adjuntar un documento que tiene varias partes, una de las cuales contiene XML.
La solución tradicional a esto es un archivo (por ejemplo, tar). Pero si desea mantener el documento adjunto en un formato basado en texto o si no tiene acceso a una biblioteca de archivo de archivos, también existe un esquema estandarizado que se usa mucho en correo electrónico y HTTP que es multiparte / * MIME con Codificación de transferencia de contenido: binario .
Por ejemplo, si sus servidores se comunican a través de HTTP y desea enviar un documento de varias partes, siendo el principal un documento XML que se refiere a datos binarios, la comunicación HTTP podría verse así:
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--
Como en el ejemplo anterior, el XML se refiere a los datos binarios en la multiparte adjunta mediante un cid
esquema de URI que es un identificador del encabezado Content-Id. La sobrecarga de este esquema sería solo el encabezado MIME. También se puede utilizar un esquema similar para la respuesta HTTP. Por supuesto, en el protocolo HTTP, también tiene la opción de enviar un documento de varias partes en una solicitud / respuesta separada.
Si desea evitar envolver sus datos en una multiparte es usar URI de datos:
<myxml>
<data href="data:application/something;charset=utf-8;base64,dGVzdGRhdGE="/>
</myxml>
Pero esto tiene la sobrecarga de base64.