在解析XML之前避免使用十六进制字符

时间:2011-05-20 09:13:47

标签: c# xml parsing hex

如何在解析XML之前避免使用十六进制字符?

enter image description here

1 个答案:

答案 0 :(得分:0)

您的问题不是十六进制字符(这些都很好)。您的问题是XML中不允许的字符。该字符的十六进制值(所有字符都具有十六进制值)在错误消息中给出,以帮助您确定该字符是什么,这特别有用,因为XML中不允许的字符通常是控制字符,非字符和错误匹配的代理人,无论如何都不是可打印的字符。

换句话说,如果您看到此错误消息,则尝试将某些内容解析为非XML的XML。

有一些事情可能导致这种情况:

  1. 发送的XML中的错误(意味着是XML,但它有错误。)
  2. 你刚刚拿到了错误的文件。
  3. 在解密和/或解压缩之前,您使用的是加密和/或压缩文件。
  4. 你正在拾取传输的人工制品,因为你正在以错误的级别读取流(非常罕见)。
  5. 第一种情况可能更糟,因为它可能是由其他人的错误引起的,而有些人甚至不相信XML中不允许使用字符,因为这些字符实际上并不是字符,也不会修复它们一团糟(哇!)有时你可以过滤掉他们的垃圾,但这总是充满了。

    您在代码示例中的其他地方谈到解密这一事实让我怀疑案例3:它是加密的XML而您还没有解密它。

    它可能是两者的混合,有人试图将原始加密八位字节打包成XML格式。这是不可能的,但是如果您需要以XML格式存储加密八位字节,则必须以XML兼容格式(如base-64或十六进制)重新编码这些八位字节。或者,根本不要使用XML。