我加密的数据起诉PKCS-7使用这个值内的xml标签,当我解析这个xml它给我
[致命错误]:1:108:在文档的元素内容中发现无效的XML字符(Unicode:0x6)。错误:org。xml。萨克斯。SAXParseException:在文档的元素内容中发现无效的XML字符(Unicode:0x6)。
请帮我解决这个问题
非常感谢
在XML文档中封装二进制数据的一种方法是对值进行base-64编码。否则(正如您所发现的),数据容易包含XML数据流中不合法的字符。XML确实允许使用一些控制字符,但仅允许使用U 0009(制表符)、U 000A(LF)和U 000D(CR)。
当然,使用Base64确实需要(a)无论您使用什么系统来生成XML,都有一个执行Base64编码的函数(如果您有一个加密库来生成PKCS7,我猜您有一个Base64编码函数),以及(b)所有使用您正在生成的XML的系统都知道,该值应该是bas64编码的。如果您使用XSD模式来定义数据源和数据接收器之间的契约,该模式可以很容易地表示所讨论的元素的值必须是基64编码的。否则,你只需要记录事实。
XML中不允许使用确认字符。在解析之前,您可能需要在XML中编码您的PKCS-7字符串。
PKCS7文本似乎有一个无效字符“ACK”
您可以在另一个答案中阅读:
发现无效的XML字符(Unicode:0xc)