XPath Query C#动态提取节点

时间:2011-09-29 16:27:51

标签: c# xml xpath

我不得不编写一个XPath查询来根据问题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的新手,发现很难理解它。

非常感谢提前。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

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

阅读有关XmlDocumentXPathDocumentXPathNavigatorXPathExpression的相应方法的MSDN文档