XML文档中的错误(2,2)

Hir*_*iya 6 c# xml-serialization

我有一些xml文件,我试图在给定的代码中反序列化如下.

using (StreamReader srFileContent = new StreamReader(filePath))  
{
    XmlSerializer serializer = new XmlSerializer(typeof(messageType));   
    messageType objMessage = (messageType)serializer.Deserialize(srFileContent);  
}
Run Code Online (Sandbox Code Playgroud)

这里文件位于filePath不包含以下行

<?xml version="1.0"?>
<message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Run Code Online (Sandbox Code Playgroud)

这就是我收到错误的原因.在反序列化给定文件的流之前,您可以帮助我如何添加此行运行时.

错误如下:

System.InvalidOperationException:XML文档中存在错误(2,2).---> System.InvalidOperationException:没想到.在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReadermessageType.Read161_message()---内部异常堆栈跟踪的结束---在系统的System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle,XmlDeserializationEvents事件) CCR2BB.frmMain.BWConvertProcess_DoWork()的.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)

lep*_*pie 13

您将不得不查看基本异常以找出问题所在.捕获的异常可能包含4个或更多内部异常.

例如:

try
{
  ...
}
catch (Exception ex)
{
  Console.WriteLine(ex.GetBaseException());
}
Run Code Online (Sandbox Code Playgroud)


cst*_*ler 5

另一个问题的解决方案是:

XmlRootAttribute xRoot = new XmlRootAttribute();
xRoot.ElementName = "message";
// xRoot.Namespace = "http://www.cpandl.com";
xRoot.IsNullable = true;

XmlSerializer xs = new XmlSerializer(typeof(messageType),xRoot);
Run Code Online (Sandbox Code Playgroud)

也许这是解决您问题的一种方法。由于我的网络 MSDN 已关闭,因此我无法提供有关 XmlRootAttribute 的更多文档。