2012-05-12 2 views
0

일부 텍스트의 XML 파일 노드를 읽는 asp.net 페이지를 만들었습니다. 아래 은 내 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 코드 란 무엇입니까? 사용자가 부분 컴파일로 답변을 입력 ... 그래서 난 내 xml 대답 노드 내에 입력 된 kweyword를 확인하고 싶습니다.

사용자 응답이 노드 응답과 일치하면 대답의 정확도를 백분율로 표시합니다.

도와주세요 ...

감사 의견에서 언급 한 바와 같이

+2

XML 파일에 * 해당 형식이 있습니까? 질의 응답과 대답을 번갈아 사용하는 대신에, 응답 요소 * 안의 * 요소를 사용하여 질문 당 요소를 갖는 것이 훨씬 더 현명 할 것입니다. 그것은 특히 질문과 관련이 없습니다 (XML 부분 중 아무 것도 - 문자열 유사성에만 관심이 있습니다). 그러나 그것은 당신의 삶을 더 쉽게 만듭니다. –

+0

Jon의 코멘트에 추가하려면 - 각 답변마다 다른 요소 유형을 사용하는 것이 특히 바람직하지 않습니다 (동일한 요소 유형을 사용하는 질문과 반대). –

+0

내가 이것을 사용할 수 있도록 예제를 제안 할 수 있습니까? .. 그리고 당신에게 감사합니다. – aamankhaan

답변

1

, 모든 대답 요소는 동일한 태그를 가져야한다.

XLinq을 사용하는 데 제한이 없으며 answer 태그가 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(); 
관련 문제