我有一些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)中有一个错误。-> System.InvalidOperationException:出乎意料.在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReadermessageType.Read161_message()
发布于 2012-05-24 13:17:46
为了找出问题,您必须查看基本异常。捕获的异常可能包含4个或更多内部异常。
例:
try
{
...
}
catch (Exception ex)
{
Console.WriteLine(ex.GetBaseException());
}发布于 2012-05-24 13:11:34
另一个问题的解决办法是:
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提供更多的文档。
发布于 2012-05-24 14:07:27
你从哪里得到的‘信息类型’类?
如果您使用xsd.exe为您的xml创建了xsd,然后使用xsd创建了这个类。
然后,您的项目将有两个包含该类的文件。
其中一个文件是DataSet.
DataSet类
.cs文件。当您在反序列化时使用这个类时,它将引用从designer.cs派生的类,如果您从项目中删除designer.cs,您的代码将引用.cs文件中的部分类。< code >H 212F 213通过删除这个具有从designer.cs派生的类的DataSet文件,我能够解决这个错误。
https://stackoverflow.com/questions/10737892
复制相似问题