C# 根目录下的XML反序列化错误

C# 根目录下的XML反序列化错误,c#,xml,xml-serialization,xml-deserialization,C#,Xml,Xml Serialization,Xml Deserialization,反序列化XML时遇到问题: System.InvalidOperationException was unhandled Message=There is an error in XML document (0, 0). Source=System.Xml StackTrace: at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle,

反序列化XML时遇到问题:

System.InvalidOperationException was unhandled
  Message=There is an error in XML document (0, 0).
  Source=System.Xml
  StackTrace:
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)
       at xsdToObject.Program.Main(String[] args) in D:\Old Documents\Projects\xsdToObject\xsdToObject\Program.cs:line 20
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Xml.XmlException
       Message=Root element is missing.
       Source=System.Xml
       LineNumber=0
       LinePosition=0
       SourceUri=""
       StackTrace:
            at System.Xml.XmlTextReaderImpl.Throw(Exception e)
            at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
            at System.Xml.XmlTextReaderImpl.Read()
            at System.Xml.XmlTextReader.Read()
            at System.Xml.XmlReader.MoveToContent()
            at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderentityColumnsColumnArray.Read3_ArrayOfEntityColumnsColumn()
       InnerException: 
进入内部异常详细信息时,主要错误消息如下: {“缺少根元素。”}

我的xml文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>

<entity name="ScheduleTaskEntity" schema="bclscheduler" namespace="http://www.bcl-gaming.com/data/1">
<columns>
<column name="Id" type="identity" />
<column name="UID" type="UID" />
<column name="Timestamp" type="timestamp"/>
<column name="DateCreated" type="datecreated"/>
<column name="Enabled" type="bool" />
<column name="TypeFullname" type="string" size="500" />
<column name="PropertiesLOB" type="propertybag" />
<column name="DisplayName" type="string" size="64" />
<column name="LastDateExecuted" type="datetime" nullable="true" />
<column name="LastMessage" type="string" />
<column name="LastSessionUID" type="guid" nullable="true" />
<column name="CurrentState" type="string" />
<column name="LastDateStarted" type="datetime" nullable="true"/>
<column name="SingleInstance" type="boolean" />
<column name="ExecuteCount" type="bigint" />
<column name="ErrorCount" type="bigint" />      
</columns>
</entity>
entity e;

System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(entityColumnsColumn[]));
StreamReader reader = new StreamReader(@"D:\Old Documents\Projects\xsdToObject\xsdToObject\ScheduleTaskEntityTest.xml");
reader.ReadToEnd();
//it gives me the error here
e = (entity)x.Deserialize(reader);
reader.Close();
有什么想法吗

reader.ReadToEnd();
//it gives me the error here
e = (entity)x.Deserialize(reader);
问题是
读取器.ReadToEnd()
-在此之后,没有任何内容可读取,只有在您尝试反序列化时-此操作必须失败。只需直接使用StreamReader即可:

using(StreamReader reader = new StreamReader(@"D:\Old Documents\Projects\xsdToObject\xsdToObject\ScheduleTaskEntityTest.xml"))
{
    e = (entity)x.Deserialize(reader);
}
问题是
读取器.ReadToEnd()
-在此之后,没有任何内容可读取,只有在您尝试反序列化时-此操作必须失败。只需直接使用StreamReader即可:

using(StreamReader reader = new StreamReader(@"D:\Old Documents\Projects\xsdToObject\xsdToObject\ScheduleTaskEntityTest.xml"))
{
    e = (entity)x.Deserialize(reader);
}

在运行时反序列化时指定根属性

XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.ElementName = "entity";    
xmlRoot.IsNullable = true;

XmlSerializer xs = new XmlSerializer(typeof(Object),xmlRoot);

在运行时反序列化时指定根属性

XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.ElementName = "entity";    
xmlRoot.IsNullable = true;

XmlSerializer xs = new XmlSerializer(typeof(Object),xmlRoot);

现在我有一个错误:{“不是预期的。”}之前的错误发生在以下行:e=(实体)x.Deserialize(读卡器)@库尔特:这听起来像是XML数据的问题,现在XML文件已通过visualstudio命令promt转换为xsd,而且XML文件中的数据确实很好,因为以前有其他人使用过此XML文件,唯一的问题是他们不再有解决方案……还有,为什么要使用
typeof(entityColumnsColumn[])
什么时候应该是
typeof(entity)
-或者它们是相同的?现在我有一个错误:{“不是预期的。”}之前的错误发生在以下行:e=(entity)x.Deserialize(reader)@库尔特:这听起来像是XML数据的问题,现在XML文件已通过visualstudio命令promt转换为xsd,而且XML文件中的数据确实很好,因为以前有其他人使用过此XML文件,唯一的问题是他们不再有解决方案……还有,为什么要使用
typeof(entityColumnsColumn[])
什么时候应该是
类型的(实体)
-或者它们是相同的?