XML文档中的错误(2,2)
我有一些xml文件,我试图在给定的代码中反序列化如下。
using (StreamReader srFileContent = new StreamReader(filePath)) { XmlSerializer serializer = new XmlSerializer(typeof(messageType)); messageType objMessage = (messageType)serializer.Deserialize(srFileContent); }
这里文件位于filePath不包含以下行
这就是我收到错误的原因。 在反序列化给定文件的流之前,您可以帮我如何添加此行运行时。
错误如下:
System.InvalidOperationException:XML文档中存在错误(2,2)。 —> System.InvalidOperationException:没想到。 在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReadermessageType.Read161_message()—内部exception堆栈跟踪结束—在系统的System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle,XmlDeserializationEvents事件) CCR2BB.frmMain.BWConvertProcess_DoWork()的.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)
您将不得不查看基本exception以找出问题所在。 捕获的exception可能包含4个或更多内部exception。
例如:
try { ... } catch (Exception ex) { Console.WriteLine(ex.GetBaseException()); }
另一个问题的解决方案是:
XmlRootAttribute xRoot = new XmlRootAttribute(); xRoot.ElementName = "message"; // xRoot.Namespace = "http://www.cpandl.com"; xRoot.IsNullable = true; XmlSerializer xs = new XmlSerializer(typeof(messageType),xRoot);
也许这是解决问题的方法。 因为我的网络MSDN已关闭,所以无法为XmlRootAttribute提供更多文档。
从哪里获得“messageType”类?
如果您使用xsd.exe为xml创建了xsd,然后使用xsd创建了此类。
然后你的项目将有两个包含这个类的文件。
- 其中一个文件是
designer.cs
,它包含从DataSet
类派生的这个类 - 一个文件只是一个
.cs
文件,它有一个部分类。 - 在反序列化时使用此类时,它将引用Designer.cs中派生自
DataSet
。 - 但是如果你从项目中删除designer.cs,你的代码将引用.cs文件中的部分类。
通过删除此designer.cs文件,该文件具有从DataSet
派生的类,我能够解决此错误。