首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML文档中的错误(2,2)

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

Stack Overflow用户
提问于 2012-05-24 12:53:18
回答 3查看 30.4K关注 0票数 7

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

代码语言:javascript
复制
using (StreamReader srFileContent = new StreamReader(filePath))  
{
    XmlSerializer serializer = new XmlSerializer(typeof(messageType));   
    messageType objMessage = (messageType)serializer.Deserialize(srFileContent);  
}

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

代码语言:javascript
复制
<?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()

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-24 13:17:46

为了找出问题,您必须查看基本异常。捕获的异常可能包含4个或更多内部异常。

例:

代码语言:javascript
复制
try
{
  ...
}
catch (Exception ex)
{
  Console.WriteLine(ex.GetBaseException());
}
票数 14
EN

Stack Overflow用户

发布于 2012-05-24 13:11:34

另一个问题的解决办法是:

代码语言:javascript
复制
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提供更多的文档。

票数 5
EN

Stack Overflow用户

发布于 2012-05-24 14:07:27

你从哪里得到的‘信息类型’类?

如果您使用xsd.exe为您的xml创建了xsd,然后使用xsd创建了这个类。

然后,您的项目将有两个包含该类的文件。

其中一个文件是DataSet.

  • But,它包含从DataSet

  • 派生出来的类,其中一个文件只是一个具有部分类的.cs文件。当您在反序列化时使用这个类时,它将引用从designer.cs派生的类,如果您从项目中删除designer.cs,您的代码将引用.cs文件中的部分类。< code >H 212F 213

通过删除这个具有从designer.cs派生的类的DataSet文件,我能够解决这个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10737892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档