1

質問を表示するための1つのラベルと、それぞれの質問に答えるための1つのテキストボックスがあるウィンドウアプリケーションを作成しています。次に、xmlファイルで回答を確認するための3つのボタンと、次の質問のための1つのボタンと前の質問のための1つのボタンがあります。

これは私のxmlファイルです

<?xml version="1.0" encoding="utf-8" ?>
<Exam>
  <Question number="1" Text="What is IL Code">
    <Answer Text="Half compiled, Partially compiled code"> </Answer>
  </Question>
  <Question number="2" Text="What is JIT">
    <Answer Text="IL code to machine language"> </Answer>
  </Question>
  <Question number="3" Text="What is CLR">
    <Answer Text="Heart of the engine , GC , compilation , CAS(Code access security) , CV ( Code verification)"> </Answer>
  </Question>
</Exam> 

今ボタンをクリックすると、xmlの回答でユーザーの回答を確認したいのですが、この部分は私が行ったのですが、最初の質問、つまりこのコードのilコードは何か、私のコードは正しく機能し、質問が変更されたときに私のコードはいつでもほとんど問題はありません最初の質問をしてこれと比較するたびに2番目の質問をすることができないので、どうすればこれを達成できますか? 以下は私の切り取ったコードです

string[] arrUserAnswer = textBox1.Text.Trim().ToLower().Split(' ');
            do
            {
                XmlReader reader = XmlReader.Create(@"E:\ferozProject\WindowsFormsApplication1\WindowsFormsApplication1\QuestionFile.xml");
                reader.Read();
                reader.ReadToFollowing("Question");
                reader.MoveToContent();
                que = reader.GetAttribute("Text");
                reader.ReadToFollowing("Answer");
                reader.MoveToContent();
                string[] arrXMLAnswer = reader.GetAttribute("Text").ToString().Trim().ToLower().Split(' ');
                List<string> lststr1 = new List<string>();
                if (label2.Text == que)
                {
                    abc = 1;
                    foreach (string nextStr in arrXMLAnswer)
                    {
                        if (Array.IndexOf(arrUserAnswer, nextStr) != -1)
                        {
                            lststr1.Add(nextStr);
                        }
                    }
                    if (lststr1.Count > 0)
                    {
                        label4.Visible = true;
                        label4.Text = "Your Answer is " + ((100 * lststr1.Count) / arrXMLAnswer.Length).ToString() + "%" + "Correct";
                    }
                    else
                    {
                        textBox1.Text = "0 %";
                    }


                }
                else
                {
                    reader.ReadToNextSibling("Question");
                }


            } while (abc <= 0);
            abc = 0;

私はそのために2番目の別の方法も使用しましたが、質問ノード内に質問を書いたためにコードが私の質問を見つけることができませんでした。以下は私の別のコードです。

XmlDocument docQuestionList = new XmlDocument();// Set up the XmlDocument //
            docQuestionList.Load(@"E:\ferozProject\WindowsFormsApplication1\WindowsFormsApplication1\QuestionFile.xml"); //Load the data from the file into the XmlDocument //
            XmlNodeList QuestionList = docQuestionList.SelectNodes("Exam/Question");
            foreach (XmlNode nodexm in QuestionList)
            {
                string obj = nodexm.SelectNodes("Text").ToString();
                if (obj == label2.Text)
                {
                    string[] arrUserAnswer = textBox1.Text.Trim().ToLower().Split(' ');
                    string[] arrXMLAnswer = nodexm.NextSibling.InnerText.Trim().ToLower().Split(' ');
                    List<string> lststr1 = new List<string>();
                    foreach (string nextStr in arrXMLAnswer)
                    {
                        if (Array.IndexOf(arrUserAnswer, nextStr) != -1)
                        {
                            lststr1.Add(nextStr);
                        }
                    }
                    if (lststr1.Count > 0)
                    {
                        label4.Text = "Your Answer is " + ((100 * lststr1.Count) / arrXMLAnswer.Length).ToString() + "%" + "Correct";
                    }
                    else
                    {
                        textBox1.Text = "0 %";
                    }
                }
            }

いずれかの方法で私を助けてください

4

1 に答える 1

2

何かのようなもの:

//setup the doc
string fn="C:\\bla.xml";
XmlDocument xmlDocument=new XmlDocument();
xmlDocument.Load(fn);
XmlNode root=xmlDocument.DocumentElement;

//get the node
XmlNode answerNode=root.SelectSingleNode("//Question[@number="+num+"]/Answer");

//get the value
string attrName="Text";
XmlAttribute atr=answerNode.Attributes.GetNamedItem(attrName) as XmlAttribute;
if (atr!=null){
   string answer=atr.value;
}

あなたの人生をずっと楽にしてくれます。num 変数に注意して指定し、null チェックをいくつか実行します。

于 2012-05-25T12:43:09.640 に答える