C# 读取有效的XML时发生单声道错误:“quot;按顺序读取仅适用于编码/裸格式“;

C# 读取有效的XML时发生单声道错误:“quot;按顺序读取仅适用于编码/裸格式“;,c#,.net,mono,monodevelop,xmlreader,C#,.net,Mono,Monodevelop,Xmlreader,当使用Mono的System.Xml.XmlReader读取时,我得到以下错误: System.InvalidOperationException: Read by order only possible for encoded/bare format at System.Xml.Serialization.ClassMap.GetElement (Int32 index) [0x00000] in <filename unknown>:0 at System.Xml.Se

当使用Mono的
System.Xml.XmlReader
读取时,我得到以下错误:

System.InvalidOperationException: Read by order only possible for encoded/bare format
  at System.Xml.Serialization.ClassMap.GetElement (Int32 index) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map, System.Object ob, Boolean isValueList, Boolean readBySoapOrder) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map, System.Object ob, Boolean isValueList, Boolean readBySoapOrder) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot (System.Xml.Serialization.XmlTypeMapping rootMap) [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot () [0x00000] in <filename unknown>:0 
  at System.Xml.Serialization.XmlSerializer.Deserialize (System.Xml.Serialization.XmlSerializationReader reader) [0x00000] in <filename unknown>:0 
System.invalidoOperationException:仅可按顺序读取编码/裸格式
位于:0中的System.Xml.Serialization.ClassMap.GetElement(Int32索引)[0x00000]处
在System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers(System.Xml.Serialization.ClassMap映射,System.Object对象对象,布尔值isValueList,布尔值readBySoapOrder)[0x00000]中:0
位于System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers(System.Xml.Serialization.XmlTypeMapping typeMap,System.Object ob)[0x00000]中:0
在System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance(System.Xml.Serialization.XmlTypeMapping typeMap,Boolean isNullable,Boolean checkType)[0x00000]中:0
在System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject(System.Xml.Serialization.XmlTypeMapping typeMap,Boolean isNullable,Boolean checkType)[0x00000]中:0
位于:0中的System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement(System.Xml.Serialization.XmlTypeMapElementInfo elem)[0x00000]处
在System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers(System.Xml.Serialization.ClassMap映射,System.Object对象对象,布尔值isValueList,布尔值readBySoapOrder)[0x00000]中:0
位于System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers(System.Xml.Serialization.XmlTypeMapping typeMap,System.Object ob)[0x00000]中:0
在System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance(System.Xml.Serialization.XmlTypeMapping typeMap,Boolean isNullable,Boolean checkType)[0x00000]中:0
在System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject(System.Xml.Serialization.XmlTypeMapping typeMap,Boolean isNullable,Boolean checkType)[0x00000]中:0
位于System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot(System.Xml.Serialization.XmlTypeMapping rootMap)[0x00000]中:0
位于:0中的System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot()[0x00000]处
在System.Xml.Serialization.XmlSerializer.Deserialize(System.Xml.Serialization.XmlSerializationReader reader)[0x00000]中:0
有什么问题

首先,
按顺序读取仅适用于编码/裸格式
意味着什么

在运行平台Mono/.NET 3.5的Ubuntu 2012.04上开发Monodevelop 2.8.6.3
Mono JIT编译器2.10.8.1

Mono在

请参见


请参见

我发布了修复此问题的修补程序。它适用于主干版本(3.0.?)。 如果您不想触摸用户的mono,只需将new System.Xml.dll复制到程序所在的文件夹中即可。Mono将使用您的dll而不是用户的


该修补程序附加到此错误:

我发布了修复此问题的修补程序。它适用于主干版本(3.0.?)。 如果您不想触摸用户的mono,只需将new System.Xml.dll复制到程序所在的文件夹中即可。Mono将使用您的dll而不是用户的


该修补程序与此bug相关:

您能举一个小例子说明您在哪里出错吗?@Reniuz:它实际上在开源库“DotCMIS”的源代码中。我将试着准备一个更小的可复制的代码片段。你能举个小例子说明你在哪里出错吗?@Reniuz:它实际上在开源库“DotCMIS”的源代码中。我将尝试准备一个更小的可复制片段。太好了!实际上我现在正在尝试应用补丁,但是
cd mcs/class/System.XML;修补程序—干运行—p1<~/Downloads/roman。修补程序
表示在输入行6中找不到要修补的文件。。。这很奇怪,因为我当前的目录包含
System.Xml.Serialization
rzavalov@rzavalov-pc:~$cd~/Desktop/System.Xml.Serialization/rzavalov@rzavalov-pc:~/Desktop/System.Xml.Serialization$patch--dry run-p1-i Serialization.patch修补文件XmlSerializationReaderInterpreter.cs修补文件XmlTypeMapping.cs将修补程序放入System.Xml.Serialization中,并将cd放入其中。太棒了!实际上我现在正在尝试应用补丁,但是
cd mcs/class/System.XML;修补程序—干运行—p1<~/Downloads/roman。修补程序
表示在输入行6中找不到要修补的文件。。。这很奇怪,因为我当前的目录包含
System.Xml.Serialization
rzavalov@rzavalov-pc:~$cd~/Desktop/System.Xml.Serialization/rzavalov@rzavalov-pc:~/Desktop/System.Xml.Serialization$patch--dry run-p1-i Serialization.patch修补文件XmlSerializationReaderInterpreter.cs修补文件XmlTypeMapping.cs将修补程序放入System.Xml.Serialization中,并将cd放入其中。