C# XML文档(0,0)中存在错误。控制台应用程序C
我有一个使用web服务的控制台应用程序。我试图实现的目的是提取一些关于工作正常的项目的信息 web服务GetProjectData输出几个参数,其中一个参数表示其状态 我创建了一个状态为所需的xml文件,因为GetProjectData不接受任何参数 当我运行以下代码时,我有一个错误,XML文档0、0中有一个错误 你能告诉我如何做到这一点吗 谢谢 这是创建的xmlC# 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</
<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替换了它,并且仍然给出了相同的错误