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派生的类,我能够解决此错误。