0

テキストのxmlファイルノードを読み取っているasp.netのページを作成しました。以下は、私のxmlファイルがどのように見えるかです。

<?xml version="1.0" encoding="utf-8" ?>
<Questions>
  <Question id="1">What is IL code </Question>
  <Answer1>Half compiled,Partially compiled code </Answer1>
  <Question id="2">What is TL code </Question>
  <Answer2>Half compiled,Partially compiled code </Answer2>
</Questions>

私はまた、質問を表示するためのラベルと、ユーザーがその特定の質問に対する回答を入力できるテキストを持つ.aspxページを作成しました.1つのボタンの下には、以下のようなコードがあります

    XmlDocument docQuestionList = new XmlDocument();// Set up the XmlDocument //
    docQuestionList.Load(@"C:\Users\Administrator\Desktop\questioon\questioon\QuestionAnswer.xml"); //Load the data from the file into the XmlDocument //
    XmlNodeList AnswerList = docQuestionList.SelectNodes("Questions/Question");
    foreach (XmlNode Answer in AnswerList)
    {
        if (Answer.InnerText.Trim() == lblQuestion.Text)
        {
            if (Answer.NextSibling.InnerText.Trim() == txtUserAnswer.Text)
            {
                // This is right Answer
                TextBox1.Text = "right";
            }
            else
            {
                // This is wrong Answer
                TextBox1.Text = "wrong";
            }
        }
    }

特定の質問に対してユーザーが入力した回答のパーセンテージを表示したいと考えています。

たとえば、質問が ....IL コードとは何だとします。ユーザーは部分的にコンパイルして回答を入力します..だから、XML回答ノード内の入力されたkweywordのみをチェックしたいのです。

ユーザーの回答がノードの回答と一致する場合は、回答の精度をパーセンテージで表示します。

助けてください...

ありがとう、

4

1 に答える 1

1

コメントで述べたように、すべての回答要素には同じタグが必要です。

XLinqの使用が制限されておらず、回答タグの形式が AnswerXXX である場合、次のコードは、質問、回答、および回答の割合 (質問の合計/回答の合計)、および正解の割合 (正解/回答の合計) を決定するためのものです。 .

必要に応じて比較ロジックをカスタマイズできます。

        var xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
        "<Questions>" +
        "<Question id=\"1\">What is IL code </Question>" +
        "<Answer1>Half compiled,Partially compiled code </Answer1>"+
        "<Question id=\"2\">What is TL code </Question>"+
        "<Answer2>Half compiled,Partially compiled code1 </Answer2>"+
        "</Questions>";

        var correctAnswerText1 = "Half compiled,Partially compiled code ";// set it to txtUserAnswer.Text


        XElement root= XElement.Parse(xml); // Load String to XElement
        var questions = root.Elements("Question"); // All questions tag
        var answers = root.Elements().Where(e=> e.Name.LocalName.Contains("Answer")); //All answers tag
        var correctAnswers = answers.Where( e=> !e.IsEmpty && String.Equals(e.Value, correctAnswerText1)); // All correct answers, here answer comparision logic can be customized

        var answerPercent = questions.Count()*100/answers.Count();
        var correctAnswerPercent = questions.Count()*100/answers.Count();
        questions.Dump();
        answers.Dump();
        correctAnswers.Dump();
        percantage.Dump();
        //root.Dump();
于 2012-05-13T03:05:05.607 に答える