Binární data opravdu do XML nevložíte přímo, bloky C0 a C1 jsou až s výjimkou pár znaků jako konce řádek v XML zakázané.
Jediné více používané řešení pro vkládání binárních dat přímo do XML je base64. Ale to se hodí pro menší objemy dat. Přenášet třeba PDF dokument jako base64 uvnitř XML je trochu zvrhlost a plýtvání zdroji. To už by snad bylo lepší, kdyby ta zpráva byl ZIP, kde bude XML s medataty, digitálními podpisy a odkazy na binární objekty uvnitř toho ZIPu.
Nojono, on ten XML je vůbec špatný formát, ale když ho chce svět, tak ať to aspoň dělá pořádně.
Použití CDATA nevylučuje binární data, je pouze chybou parsera, že to neumí zpracovat. Problém s ]]> se dá vyřešit přerušením sekvence
<![CDATA[...]]]]><![CDATA[>... ]]>
Takto dvě zapsané sekvence nemusí nutně znamenat rozdělení binárních dat. XML nic takového nemusí specifikovat, je to jen na tom, jak to interpetuje parser.
Přes CDATA vložíte sice (téměř) libovolný text (nesmí obsahovat "]]>", ale musí to být TEXT. Binární data jsou něco úplně jiného (třeba takový nulový byte vám spolehlivě odstřelí libovolný XML parser).
Jak je to s tou velikostí datové zprávy?
Datová zpráva je ve formátu XML. Dokumenty do ní vložené jsou převedeny do BASE64, logicky se tedy převodem zvětší. Může to být 10MB na vstupu a datová zpráva pak může být větší nebo 10MB je omezení datové zprávy a na vstupu musím dát menší soubory?