異常信息:
使用XDocument.Parse解析XML時報異常: 根級別上的數據無效。 第 1 行 位置 1。
異常環境:
1、客戶端使用的是Framework2.0的XmlDocument生成Xml文件並傳給服務端
2、服務端使用的是Framework4.0的XDocument.Parse解析上傳的Xml文件內容,解析內容時拋出上傳異常
分析原因:
1、google、百度后基本確定是文件編碼的問題,XmlDocument.Save()生成的文件有時可以解析有時又不行
2、
可以解析的xml文件編碼屬性為:(NotePad++查看)

3、
不能解析的xml文件編碼屬性為:

4、只要讓XmlDocument.Save()生成的文件格式符合可以解析標准即可
解決方法:
使用XmlDocument
.Save()直接保存XML有編碼問題,使用下述方法即可
//設置xml生成樣式
XmlWriterSettings xmlSetting = new XmlWriterSettings();
xmlSetting.Encoding = new UTF8Encoding( false);
xmlSetting.Indent = true;
//保存xml文件
XmlWriter writer = XmlWriter.Create(filePath, xmlSetting);
xmldoc.Save(writer);
writer.Close();
注:
filePath:保存的文件路徑
xmldoc:XmlDocment對象
XmlWriterSettings xmlSetting = new XmlWriterSettings();
xmlSetting.Encoding = new UTF8Encoding( false);
xmlSetting.Indent = true;
//保存xml文件
XmlWriter writer = XmlWriter.Create(filePath, xmlSetting);
xmldoc.Save(writer);
writer.Close();
注:
filePath:保存的文件路徑
xmldoc:XmlDocment對象