2011-04-22 72 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