2012-05-12 51 views
0

我已經創建了一個asp.net頁面,該頁面正在讀取某些文本的xml文件節點。下面的 是我的xml文件的樣子。如何比較c#中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頁面中有一個像下面

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代碼?並且用戶輸入答案爲部分編譯..因此我只想檢查輸入的kweyword在我的xml答案節點中。

如果用戶答案與節點答案匹配,則以百分比顯示答案的準確性。

請幫助...

感謝,

+2

您的XML文件*是否具有*格式?每個問題有一個元素會更明智,其中的答案*在該元素的內部,而不是在問題和答案之間交替。這與問題無關(尤其是XML部分 - 您只是對字符串相似性感興趣),但它會讓您的生活更輕鬆。 –

+0

要添加到Jon的評論 - 對每個答案都有不同的元素類型似乎特別糟糕(相對於所有使用相同元素類型的問題) –

+0

您能否提出一個示例以便我可以使用它。 ..感謝您的寶貴意見 – aamankhaan

回答

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();