Якщо у вас є контроль над форматом XML, ви повинні перетворити проблему назовні. Замість того, щоб прикріплювати двійковий XML, ви повинні подумати про те, як долучити документ, який має декілька частин, одна з яких містить XML.
Традиційним рішенням цього є архів (наприклад, смола). Але якщо ви хочете зберегти свій додаючий документ у текстовому форматі або якщо у вас немає доступу до бібліотеки архівації файлів, існує також стандартизована схема, яка широко використовується в електронній пошті та HTTP, яка є багатопоточною / * MIME з Передача вмісту-кодування: двійкове .
Наприклад, якщо ваші сервери спілкуються через HTTP, і ви хочете надіслати багаточастинковий документ, основним документом є XML-документ, який посилається на двійкові дані, зв’язок HTTP може виглядати приблизно так:
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--
Як у вищенаведеному прикладі, XML посилається на бінарні дані в додатковій множині, використовуючи cid
схему URI, яка є ідентифікатором заголовка Content-Id. Накладні витрати цієї схеми були б лише заголовком MIME. Аналогічна схема також може бути використана для HTTP-відповіді. Звичайно, у протоколі HTTP ви також маєте можливість надсилати багаточастковий документ в окремий запит / відповідь.
Якщо ви хочете уникнути загортання ваших даних у багаточастинні, це використовувати URI даних:
<myxml>
<data href="data:application/something;charset=utf-8;base64,dGVzdGRhdGE="/>
</myxml>
Але це має базові64 накладні витрати.