我有一些xml文件,我试图在给定的代码中反序列化。
using (StreamReader srFileContent = new StreamReader(filePath))
{
XmlSerializer serializer = new XmlSerializer(typeof(messageType));
messageType objMessage = (messageType)serializer.Deserialize(srFileContent);
}
此处文件位于filePath的位置不包含以下行
<?xml version="1.0"?>
<message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
这就是我收到错误的原因。您可以在反序列化给定文件的流之前帮助我如何添加此行运行时。
错误如下:
System.InvalidOperationException:XML文档中存在错误 (2,2)。 ---&GT; System.InvalidOperationException:是的 没想到。在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReadermessageType. Read161_message() ---内部异常堆栈跟踪结束---在System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader) xmlReader,String encodingStyle,XmlDeserializationEvents事件)at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader的 textReader)at CCR2BB.frmMain.BWConvertProcess_DoWork()
答案 0 :(得分:13)
您必须查看基本异常才能找出问题所在。捕获的异常可能包含4个或更多内部异常。
EG:
try
{
...
}
catch (Exception ex)
{
Console.WriteLine(ex.GetBaseException());
}
答案 1 :(得分:3)
另一个问题的解决方案是:
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提供更多文档。
答案 2 :(得分:0)
你从哪里获得了'messageType'这个类?
如果您使用xsd.exe为xml创建了xsd,然后使用xsd创建了此类。
然后你的项目将有两个包含这个类的文件。
designer.cs
,其中包含此类,该类派生自DataSet
class .cs
文件,它有一个部分类。DataSet
的类。删除此designer.cs文件,该文件具有从DataSet
派生的类,我能够解决此错误。