XML解析错误

时间:2012-08-16 10:06:15

标签: java xml xml-parsing

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

  

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

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

3 个答案:

答案 0 :(得分:1)

XML中不允许使用ACK字符。在解析之前,您可能需要在XML中对PKCS-7字符串进行编码。

答案 1 :(得分:1)

似乎PKCS7文本的字符无效,即“ACK”

你可以在其他答案中读到它:

An invalid XML character (Unicode: 0xc) was found

答案 2 :(得分: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编码的。否则,你只需要记录这个事实。