XPath查询c#动态提取节点

本文关键字:提取 节点 动态 查询 XPath | 更新日期: 2023-09-27 18:10:15

我必须编写一个XPath Query来根据问题id提取问题的答案。问题id被动态地传递给查询。我不能使用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的新手,很难理解它。

提前感谢。

XPath查询c#动态提取节点

可以使用XmlDocument类和SelectSingleNode方法来执行XPath查询。您可以查看下面的文章以获取示例。在您的示例中,XPath查询将类似于Questionaire/question[id='1'],其中id当然可以是变量,以便获取相应的节点。一旦找到了与搜索条件相对应的<question>节点,就可以导航到它的子节点。

您的XPath表达式可以像这样动态生成:

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

然后,根据表示XML文档的对象,您需要调用以下方法之一:Select(), SelectNodes(), SelectSingleNode(), Evaluate()

阅读MSDN文档关于 XmlDocument, XPathDocument, XPathNavigatorXPathExpression的适当方法。