嵌套如果语句不起作用

时间:2012-04-14 09:13:34

标签: c# if-statement xmltextreader

我刚刚发布了关于尝试让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语句。

我是编程的初学者,我将不胜感激任何新的想法和建议。

3 个答案:

答案 0 :(得分:2)

为了使第一个if语句成立,reader.Name必须是“学生”。任何嵌套的if检查reader.Name的值都不是“学生”,但总是错误的。

答案 1 :(得分:1)

  

它仍会跳过所有if语句,只是设置了Student   平均值并将其添加到列表中

我首先想到的是字符串上的相等性失败,所以首先要尝试的是

 if (reader.Name.Equals("id",StringComparison.InvariantCultureIgnoreCase))..

如果这不起作用,请尝试使用简单的XmlDocument,看看它是否有效,如果没有,我会说你的代码中的其他内容是错误的,这在提供的代码中是不可见的。

使用XmlDocument的简单示例可以在这里找到:

Reading XML File using XmlDocument

答案 2 :(得分:0)

除非你上传一些关于它无效的错误,否则不容易说。语法没有错。我会说在visual studio中看到调试错误而不是获取细节。       如果你不理解错误然后上传它听到我们可以指导你。

我认为你应该尝试关闭读者。你的读者被打开了。 最后写下reader.close()。