相关疑难解决方法(0)

如何在XML中嵌入二进制数据?

我有两个用Java编写的应用程序,它们通过网络使用XML消息相互通信.我在接收端使用SAX解析器从消息中取出数据.其中一个要求是将二进制数据嵌入XML消息中,但SAX不喜欢这样.有谁知道如何做到这一点?

更新:我使用apache commons编解码器库中Base64类,以防其他人尝试类似的东西.

java xml binary binary-data

106
推荐指数
7
解决办法
10万
查看次数

以XML格式存储base64数据?

我如何在XML中存储base64字符串?

您是否使用CDATA在XML中存储base64字符串?它是否有用,因为它允许在字符串中使用<>?

base64是否可以配置,如果它们与XML冲突,你可以告诉它不要使用某些字符?

xml language-agnostic base64 cdata

44
推荐指数
3
解决办法
2万
查看次数

在XML中编码二进制数据:是否有比base64更好的替代方案?

我想在XML文件中编码和解码二进制数据(使用Python,但无论如何).我必须面对XML标记内容具有非法字符的事实.XML规范中描述了唯一允许的:

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Run Code Online (Sandbox Code Playgroud)

这意味着不允许的是:

  • 29个Unicode控制字符是非法的(0x00 - 0x20)即(000xxxxx),除了0x09,0x0A,0x0D
  • 任何超过2个字节的Unicode字符表示(UTF-16 +)都是非法的(U + D800 - U + DFFF)即(11011xxx)
  • 特殊的Unicode非字符是非法的(0xFFFE - 0xFFFF)即(11111111 1111111x)
  • <,>,&根据这篇文章了解实体内容

1个字节可以编码256种可能.通过这些限制,第一个字节限制为256-29-8-1-3 = 215个可能性.

在第一个字节的215个可能性中,base64仅使用64个可能性.Base64产生33%的开销(一旦用base64编码,6位变为1字节).

所以我的问题很简单:是否有一种比base64更有效的算法来编码XML中的二进制数据?如果没有,我们应该从哪里开始创建它?(图书馆等)

注意:你不会回答这个帖子"你不应该使用XML来编码二进制数据,因为......".只是不要.您最多可以争论为什么不使用215种不良XML解析器支持的可能性.

NB2:我不是在谈论第二个字节,但是当我们使用补充的Unicode平面时,肯定会有一些关于可用性的因素以及它应该从10xxxxxx开始遵守UTF8标准的事实(如果不是,那么? ).

xml compression unicode utf-8 xml-serialization

8
推荐指数
2
解决办法
5450
查看次数

将文件附加到WCF REST服务响应

我有一个看起来像这样的资源:

/users/{id}/summary?format={format}
Run Code Online (Sandbox Code Playgroud)

什么时候format是"xml"或"json"我用一个由WCF自动编码的用户摘要对象进行响应 - 到目前为止很好.但是当format等于"pdf"时,我希望我的回复包括一个简单的HTTP响应主体和一个PDF文件附件.

这是怎么做到的?黑客攻击WebOperationContext.Current.OutgoingResponse似乎不起作用,即使这样做也不会是正确的.在CDATA部分中包含文件的位或响应中的某些内容是不安全的.我应该创建一个子类Message,然后提供一个IDispatchMessageFormatter响应它的自定义?我走了一小段路,但最终发现文件不透明.

什么是对的?

rest wcf

5
推荐指数
1
解决办法
3392
查看次数