![]() |
1
204
您可以使用base64对二进制数据进行编码,并将其放入base64元素中;下面的文章是一篇关于这个主题的非常好的文章。 |
![]() |
2
203
XML是如此的通用…
XML就像暴力——如果它不能解决您的问题,那么您就没有充分地使用它。 编辑: 顺便说一句:base64+cdata可能是最好的解决方案
(EdET2):
|
![]() |
3
25
base64确实是正确的答案,但是cdata不是,这基本上是说:“这可以是任何东西”,但是它必须 不 不管怎样,它必须是base64编码的二进制数据。XML架构定义 Base 64 binary as a primitive datatype 可以在XSD中使用。 |
![]() |
4
11
上周我遇到了这个问题。我必须序列化一个PDF文件,并将它发送到一个XML文件中的服务器。 如果您使用的是.NET,那么可以将二进制文件直接转换为base64字符串,并将其粘贴到XML元素中。
或者,在xmlwriter对象中有一个内置方法。在我的特殊情况下,我必须包括Microsoft的数据类型命名空间:
字符串abc看起来像这样:
|
![]() |
5
6
我通常用 MIME Base64 或 URL encoding . |
![]() |
6
5
尝试对二进制数据进行base64编码/解码。还可以查看CDATA部分 |
![]() |
7
4
也许把它们编码成一个已知的集合——比如base 64是一个流行的选择。 |
![]() |
8
4
任何 binary-to-text encoding 会成功的。我用那种东西
|
![]() |
9
3
base64开销为33%。 BaseXML 对于XML1.0 开销只有20% . 但它不是一个标准,只有一个C实现。如果您关心数据大小,请查看它。但是请注意,浏览器倾向于实现压缩,这样就不需要压缩了。 我是在这个主题的讨论之后开发的: Encoding binary data within XML : alternatives to base64 . |
![]() |
10
3
虽然其他答案基本上都很好,但您可以尝试另一种更节省空间的编码方法,如yenc。( yEnc wikipedia link )有了Yenc,还可以“开箱即用”地获得校验和功能。阅读并链接以下内容。当然,因为XML没有本地的yenc类型,所以应该更新XML模式以正确描述编码的节点。 为什么? :由于编码策略base64/63,Uuencode等人编码增加了您需要存储和传输的数据量(开销),大约增加了40%(与Yenc的1-2%相比)。根据您正在编码的内容,40%的开销可能会成为一个问题。 是-维基百科摘要: https://en.wikipedia.org/wiki/YEnc Yenc是一种二进制到文本的编码方案,用于在Usenet上或通过电子邮件传输消息中的二进制文件。…与以前的编码方法(如uuencode和base64)相比,yenc的另一个优点是包含了一个CRC校验和,以验证解码后的文件是否完整地传递。 |
![]() |
11
2
你也可以 Uuencode 原始二进制数据。这种格式有点旧,但它的作用与base63编码相同。 |
![]() |
12
0
如果您可以控制XML格式,那么应该彻底解决这个问题。与其附加二进制XML,不如考虑如何将包含多个部分(其中一个部分包含XML)的文档括起来。 传统的解决方案是归档(例如tar)。但是,如果您希望将封闭文档保持为基于文本的格式,或者如果您没有访问文件存档库的权限,那么在电子邮件和HTTP中也有一个标准化方案,该方案在 multipart/* MIME 具有 Content-Transfer-Encoding: binary . 例如,如果您的服务器通过HTTP通信,并且您希望发送一个多部分文档,主要是一个引用二进制数据的XML文档,那么HTTP通信可能如下所示:
与上面的示例一样,XML通过使用
如果要避免在多部分中包装数据,请使用数据URI:
但这有base64开销。 |
![]() |
JobProcessTask · 如何读取此xpath表达式? 2 年前 |
![]() |
MBF · PHP导入/解析XML文件内容保存到数据库 3 年前 |
![]() |
TenkMan · SQL Server XML嵌套值查询表单990 3 年前 |
![]() |
Mohan.Murali.Peddini · XSLT模板循环记录 3 年前 |