C# XML文档(0,0)中存在错误。控制台应用程序C

C# XML文档(0,0)中存在错误。控制台应用程序C,c#,xml,console-application,streamwriter,xmlserializer,C#,Xml,Console Application,Streamwriter,Xmlserializer,我有一个使用web服务的控制台应用程序。我试图实现的目的是提取一些关于工作正常的项目的信息 web服务GetProjectData输出几个参数,其中一个参数表示其状态 我创建了一个状态为所需的xml文件,因为GetProjectData不接受任何参数 当我运行以下代码时,我有一个错误,XML文档0、0中有一个错误 你能告诉我如何做到这一点吗 谢谢 这是创建的xml <root> <status> <List>Published</

我有一个使用web服务的控制台应用程序。我试图实现的目的是提取一些关于工作正常的项目的信息

web服务GetProjectData输出几个参数,其中一个参数表示其状态

我创建了一个状态为所需的xml文件,因为GetProjectData不接受任何参数

当我运行以下代码时,我有一个错误,XML文档0、0中有一个错误

你能告诉我如何做到这一点吗

谢谢

这是创建的xml

<root>
    <status>
        <List>Published</List>
        <List>expired</List>
    </status>
</root>
这是我的密码

class ProjectEqualityComparer : IEqualityComparer<WS.ProjectMetaData>
    {
        #region IEqualityComparer<Project> Members

        public bool Equals(WS.ProjectMetaData x, WS.ProjectMetaData y)
        {
            return x.ProjectID.Equals(y.ProjectID);
        }

        public int GetHashCode(WS.ProjectMetaData obj)
        {
            return obj.ProjectID.GetHashCode();
        }

        #endregion
    }

[XmlRoot("root")]
public class ListOFStatus
{
    public ListOFStatus() { Items = new List<Status>(); }
    [XmlElement("status")]
    public List<Status> Items { get; set; }
}

public class Status
{
    [XmlElement("List")]
    public String Name { get; set; }
}


string customerList = "customerList";
string outCsvFile = string.Format(@"C:\\customerList\\{0}.csv", customerList + DateTime.Now.ToString("_yyyyMMdd HHmms"));

XmlSerializer ser = new XmlSerializer(typeof(ListOFStatus));
List<ListOFStatus> list = new List<ListOFStatus>();
object obj = null;

WS.ProjectData[] pr = db.GetProjectData();

using (FileStream fs = new FileStream(outCsvFile, FileMode.Append, FileAccess.Write))                    
using (StreamWriter file = new StreamWriter(fs))
{
    file.WriteLine("ProjectID, ProjectTitle,PublishStatus,NumberOfCustomers,ProjectStartDate,ProjectEndDate, URL");
    foreach(WS.ProjectData proj in pr.Distinct(new ProjectEqualityComparer()))
    {
        var userIDs = db.GetList(proj.ProjectID);                
        file.WriteLine("{0},\"{1}\",{2},{3},{4},{5},{6}",
        proj.ProjectID,
        proj.ProjectTitle,
        obj = ser.Deserialize(fs), //where I need to display the status from the projects either Published or expired
        userIDs.Length.ToString(NumberFormatInfo.InvariantInfo),
        proj.ProjectStartDate.ToString(DateTimeFormatInfo.InvariantInfo),
        proj.ProjectEndDate.ToString(DateTimeFormatInfo.InvariantInfo),
        url[i].ToString());
     }
}
这是我的预期输出


您正在尝试从输出文件反序列化。你有

using (FileStream fs = new FileStream(outCsvFile, FileMode.Append, FileAccess.Write))                    
// ...
{
    // ...
    obj = ser.Deserialize(fs);
    // ...
}
由于文件流是在追加模式下打开的,因此没有任何内容可读取

此外,您正在写入同一个文件,这似乎是非常错误的

更新:

您需要按照以下思路做一些事情:

using (FileStream xml = File.OpenRead("xmlfilename"))
using (FileStream fs = new FileStream(outCsvFile, FileMode.Append, FileAccess.Write))
// ...
{
    // ...
    obj = ser.Deserialize(xml);
    // ...
}

您期望的输入/输出是什么?您正在尝试从输出文件反序列化。ser.Deserializefs,其中fs是新的filestreamoutsvfile,FileMode.Append,FileAccess.Write。@Kris vandemoten,你说得对!你能帮我换一下吗,这样我就能工作了?谢谢,我照你说的做了,但我还是得到了同样的结果error@Aarancibia我假设您确实用实际文件名替换了xmlfilename,并且该文件确实包含您的xml?是的,我确实用实际名称config.xml替换了它,并且仍然给出了相同的错误