2011-05-20 35 views
1

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

enter image description here

+0

您正在嘗試加載你的xml,然後解密你的數據是有意的嗎? – 2011-05-20 09:16:15

+0

噢好吧這是個好主意,用FileStream讀取,解密並用xml解析它?你的意思是? – 2011-05-20 09:18:40

+0

我不知道你用CryptoConfing加密的確切方式,但是我可以看到它在xml加載之前沒有被使用過。即使我猜你必須使用文件流解密文件,首先使用XDocument.Parse來加載它。這是除非加密的東西是用XML標籤寫的,那麼錯誤是別的。 – 2011-05-20 09:24:21

回答

0

你的問題不是一個十六進制字符(這些都是罰款)。您的問題是XML中不允許使用的字符。錯誤信息中給出了該字符的十六進制值(所有字符都具有十六進制值),以幫助您確定該字符是什麼,這特別有用,因爲在XML中不允許使用的字符通常是控制字符,非字符和不匹配的替代品,無論如何,所有這些都不是可打印的字符。

換句話說,如果您看到此錯誤消息,則您嘗試將某些內容解析爲不是XML的XML。

有幾件事情,可能導致此:

  1. 在發送的XML中的錯誤(這是意味着是XML,但它是越野車)。
  2. 你剛拿起錯誤的文件。
  3. 您在解密和/或解壓縮之前使用加密和/或壓縮文件。
  4. 由於您正在閱讀錯誤級別的流(非常罕見),您正在拾取傳輸的文物。

第一種情況可能更糟糕,因爲它可能是由別人的錯誤引起的,有些人甚至不相信XML中存在不允許字符被用於諸如實際上不是字符的事情, t解決他們的混亂(gah!)。有時你可以過濾掉垃圾,但這總是充滿了煩惱。

事實上,你在代碼示例的其他地方談論過解密,這讓我懷疑情況3:它是加密的XML,你還沒有解密它。

它可能是兩者的混合體,有人試圖將原始加密八位字節打包成XML格式。這是無法完成的,但是如果您需要以XML格式存儲加密的八位字節,則必須以兼容XML的格式(如base-64或十六進制)對這些八位字節進行重新編碼。或者,也可以根本不使用XML。

相關問題