2011-09-29 3 views
1

질문 ID를 기반으로 질문에 대한 대답을 추출하는 XPath 쿼리를 작성해야합니다. 질문 ID는 동적으로 쿼리에 전달됩니다. NET 2.0에서 솔루션으로 LINQ를 사용할 수 없습니다. 아래 XML 파일을 찾으십시오.XPath 쿼리 C#을 사용하여 노드를 동적으로 꺼냅니다.

<?xml version="1.0" encoding="utf-8" ?> 
<Questionaire> 
    <question id="1"> 
    <answer>1</answer> 
    <correctAnswer>Text</correctAnswer> 
    </question> 
    <question id="2"> 
    <answer>2</answer> 
    <correctAnswer>Text</correctAnswer> 
    </question> 
</Questionaire> 

저는 XPath의 초심자인데, 주위를 둘러보기가 어렵습니다.

미리 감사드립니다.

답변

0

당신의 XPath 식은 동적으로과 같이 생성 할 수 있습니다 :

myExpression = string.Format("/*/*[id='{0}']/answer", theId); 

다음, 다음 방법 중 하나를 호출 할 필요가 XML 문서 나타내는 개체에 따라 : Select(), SelectNodes(), SelectSingleNode()Evaluate() .

은 MSDN 문서를 XmlDocument, XPathDocument, XPathNavigatorXPathExpression의 약 적절한 방법을 읽어보십시오.

+0

모든 기여에 대해 많은 감사드립니다. 나는 가까운 @ Dimitre 대답에 가까이 왔지만 여기에 그의 대답을 발견하고 잘 작동합니다. 다시 너희들을 돌봐 줘서 고마워! – Chin

+0

@Chin : 천만에. –

3

XmlDocument 클래스와 SelectSingleNode 메서드를 사용하여 XPath 쿼리를 수행 할 수 있습니다. 예를 들어 following article을 체크 아웃 할 수 있습니다. 귀하의 경우에 XPath 쿼리는 Questionaire/question[id='1']의 행을 따라 무언가가 될 것이며 여기서 id는 물론 해당 노드를 가져올 수 있습니다. 검색 기준에 해당하는 <question> 노드를 찾으면 해당 하위 노드로 이동할 수 있습니다.

+0

@_Darine, OP는 대답이 아닌 질문을 선택하려고합니다. 단일 XPath 표현식을 평가하면이 작업을 완료 할 수 있습니다. :) –

관련 문제