0

私はつい最近、XMLTextReader を機能させようとする試みについて投稿しましたが、ついに機能しました。残念ながら、if ステートメントに問題があるため、XML ファイルからデータを取得できません。最初に Student クラスを作成する必要があるため、これらの if ステートメントを別の if ステートメント内に含める必要があります。もうこれにアプローチする方法がわかりません。以下は私のコードです。それはばかげていると確信しています。私はコーディングが得意ではないので、欠けているものがあることを知っています。

 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 ステートメントをスキップします。

私はプログラミングの初心者です。新しいアイデアや提案をいただければ幸いです。

4

3 に答える 3

2

最初のifステートメントが真であるためにreader.Nameは、すでに「学生」である必要があります。の値が「student」以外であるというネストされたifチェックは、常に false になります。reader.Name

于 2012-04-14T09:15:50.800 に答える
1

それでもすべてのifステートメントをスキップし、学生平均を設定してリストに追加するだけです

私が最初に思うのは、文字列の平等が失敗するということです。したがって、最初に試すことは

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

これがうまく機能しない場合は、simpleを使用しXmlDocumentて機能するかどうかを確認してください。機能しない場合は、コード内の他の何かが間違っていると言えます。これは、提供されたコードからは表示されません。

の使用の簡単なサンプルはXmlDocumentここにあります:

XmlDocumentを使用したXMLファイルの読み取り

于 2012-04-14T09:37:44.313 に答える
0

なぜ機能しないのかについていくつかのエラーをアップロードしない限り、言うのは簡単ではありません。構文に問題はありません。詳細を取得する代わりに、VisualStudioでデバッグエラーが表示されると思います。エラーがわからない場合は、アップロードしてから聞いてください。

リーダーを閉じてみるべきだと思います。リーダーが開きます。最後にreader.close()を記述します。

于 2012-04-14T09:38:44.423 に答える