2011-04-22 119 views
4

我嘗試使用以下C# - 反序列化的XML字符串,有XML文檔(1,2)

XmlSerializer serializer = new XmlSerializer(typeof(Application)); 

App = (Application)serializer.Deserialize(xmlString); 

這一切運作良好反序列化在C#中的XML字符串時,XML是相當一個錯誤打印,但是當我有一個單行中的整個XML反序列化失敗,錯誤

XML文檔(1,2)有一個錯誤。 名稱不能以'。'開頭字符,十六進制值0x00。 1號線,位置2」

我檢查XML是如此有效。

任何人知道可以做些什麼來解決這個問題?

+2

你能發佈一個XML的例子嗎? – 2011-04-22 16:22:13

+1

你是如何確定XML是有效的?顯然,它包含一個你看不到的NULL(0x00)。找出爲什麼你看不到它。 – 2011-04-22 16:24:53

+0

我將字符串複製到xml間諜,它並沒有抱怨,它甚至驗證對模式 – user560174 2011-04-22 16:29:23

回答

9

有機會,你加載UTF-16文件爲UTF-8,結果爲每個第二個字符爲0.

如果它是真的 - 如果您保存原始XML而不使用BOM(字節順序標記),或者在打開文件時明確使用錯誤的編碼...

+1

*標記*,BOM是字節順序*標記* :) – 2011-04-22 16:25:28

+0

我從數據庫中獲取xml字符串,所以我無法控制,是否有反序列化,可以處理UTF-16呢? – user560174 2011-04-22 16:25:51

+0

@ user560174:你是如何從數據庫中獲得它,作爲一個字符串還是作爲一個字節序列? – 2011-04-22 16:26:16