Nếu bạn có quyền kiểm soát định dạng XML, bạn nên chuyển vấn đề ra bên trong. Thay vì đính kèm XML nhị phân, bạn nên suy nghĩ về cách gửi kèm một tài liệu có nhiều phần, một phần chứa XML.
Giải pháp truyền thống cho mục đích này là bản lưu trữ (ví dụ: tar). Nhưng nếu bạn muốn giữ tài liệu kèm theo của mình ở định dạng dựa trên văn bản hoặc nếu bạn không có quyền truy cập vào thư viện lưu trữ tệp, cũng có lược đồ chuẩn được sử dụng nhiều trong email và HTTP là multipart/* MIME với Content-Transfer-Encoding: binary.
Ví dụ, nếu máy chủ của bạn giao tiếp thông qua HTTP và bạn muốn gửi một tài liệu nhiều phần dữ liệu, chính là một tài liệu XML trong đó đề cập đến một dữ liệu nhị phân, các thông tin liên lạc HTTP có thể trông như thế này:
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--
Như trong ví dụ trên, XML tham chiếu đến dữ liệu nhị phân trong multipart kèm theo bằng cách sử dụng lược đồ URI cid
là định danh cho tiêu đề Content-Id. Chi phí của lược đồ này sẽ chỉ là tiêu đề MIME. Một lược đồ tương tự cũng có thể được sử dụng cho phản hồi HTTP. Tất nhiên trong giao thức HTTP, bạn cũng có tùy chọn gửi một tài liệu nhiều phần vào yêu cầu/phản hồi riêng biệt.
Nếu bạn muốn tránh gói dữ liệu của bạn trong một nhiều phần dữ liệu là sử dụng dữ liệu URI:
<myxml>
<data href="data:application/something;charset=utf-8;base64,dGVzdGRhdGE="/>
</myxml>
Nhưng điều này có overhead base64.
Nguồn
2014-12-10 08:42:35
Genius! Chỉ cần những gì tôi đang tìm kiếm! –