XPath Query C # для динамического извлечения узлов - PullRequest
1 голос
/ 29 сентября 2011

Мне нужно написать запрос XPath, чтобы получить ответ на вопрос на основе идентификатора вопроса.Идентификатор вопроса передается в запрос динамически.Я не могу использовать LINQ, поскольку решение находится в NET 2.0.Пожалуйста, найдите файл XML ниже

<?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, и мне сложно разобраться с этим.

Большое спасибо заранее.

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Вы можете использовать класс XmlDocument и метод SelectSingleNode для выполнения запросов XPath.Вы можете проверить следующую статью для примеров.В вашем случае запрос XPath будет чем-то вроде Questionaire/question[id='1'], где id может быть переменной, конечно, чтобы получить соответствующий узел.Как только вы найдете узел <question>, соответствующий вашим критериям поиска, вы сможете перейти к его дочерним узлам.

0 голосов
/ 30 сентября 2011

Ваше выражение XPath может быть сгенерировано динамически, как это :

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

затем, в зависимости от объекта, представляющего документ XML, вам необходимо вызвать один из следующих методов: Select(), SelectNodes(), SelectSingleNode(), Evaluate().

Прочитайте документацию MSDN о соответствующих методах XmlDocument, XPathDocument, XPathNavigator и XPathExpression.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...