0

我正在使用 xml 标记中的这个值来加密起诉 PKCS-7 的数据,当我解析这个 xml 时,它给了我

[致命错误]:1:108:在文档的元素内容中发现了无效的 XML 字符(Unicode:0x6)。错误:org.xml.sax.SAXParseException:在文档的元素内容中发现了无效的 XML 字符(Unicode:0x6)。

请帮我解决这个问题
非常感谢

4

3 回答 3

1

XML 中不允许使用 ACK 字符。在解析之前,您可能会在 XML 中编码您的 PKCS-7 字符串。

于 2012-08-16T10:11:35.953 回答
1

PKCS7 文本似乎有一个无效字符,即“ACK”

您可以阅读有关它的其他答案:

发现无效的 XML 字符 (Unicode: 0xc)

于 2012-08-16T10:14:04.307 回答
1

在 XML 文档中包含二进制数据的一种方法是对值进行 base-64 编码。否则(正如您所发现的)数据很容易包含在 XML 数据流中不合法的字符。XML 确实允许一些控制字符,但只允许 U+0009(制表符)、U+000A(LF)和 U+000D(CR)。

当然,使用 base64 确实需要 (a) 无论您用来生成 XML 的系统是否具有执行 base64 编码的功能(如果您有一个加密库来生成 PKCS7,我猜您有一个 base64 编码功能),并且 (b) 使用您正在生成的 XML 的所有系统都知道期望该值是 base64 编码的。如果您使用 XSD 模式来定义数据源和数据接收器之间的契约,则可以很容易地使模式表明所讨论元素的值必须是 base-64 编码的。否则,您只需记录事实即可。

于 2012-08-16T19:54:09.410 回答