我刚刚发布了关于尝试让XMLTextReader工作的消息,我终于做到了。不幸的是,现在我无法从XML文件中获取数据,因为我的if语句出错了。我需要在另一个if语句中包含这些if语句,因为它们需要首先创建Student类。我不知道如何处理这个问题。下面是我的代码,我确信它是愚蠢的。我编码不好,所以我知道它缺少的东西。
while (reader.Read())
{
reader.MoveToContent();
if (reader.NodeType == XmlNodeType.Element && reader.Name == "student")
{
Student s = new Student();
if (reader.Name == "id")
{
s.ID = reader.ReadString();
}
if (reader.Name == "firstname")
{
s.FirstName = reader.ReadString();
}
if (reader.Name == "lastname")
{
s.LastName = reader.ReadString();
}
if (reader.Name == "score")
{
s.TestScores.Add(Convert.ToInt32(reader.ReadString()));
}
s.Average = 6.00;
Students.Add(s);
}
}
[编辑]即使我告诉XMLreader继续使用reader.MoveToCOntent();它仍会跳过所有if语句。
我是编程的初学者,我将不胜感激任何新的想法和建议。
答案 0 :(得分:2)
为了使第一个if
语句成立,reader.Name
必须是“学生”。任何嵌套的if
检查reader.Name
的值都不是“学生”,但总是错误的。
答案 1 :(得分:1)
它仍会跳过所有if语句,只是设置了Student 平均值并将其添加到列表中
我首先想到的是字符串上的相等性失败,所以首先要尝试的是
if (reader.Name.Equals("id",StringComparison.InvariantCultureIgnoreCase))..
如果这不起作用,请尝试使用简单的XmlDocument
,看看它是否有效,如果没有,我会说你的代码中的其他内容是错误的,这在提供的代码中是不可见的。
使用XmlDocument
的简单示例可以在这里找到:
答案 2 :(得分:0)
除非你上传一些关于它无效的错误,否则不容易说。语法没有错。我会说在visual studio中看到调试错误而不是获取细节。 如果你不理解错误然后上传它听到我们可以指导你。
我认为你应该尝试关闭读者。你的读者被打开了。 最后写下reader.close()。