Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XPath查询C#以动态拉出节点_C#_Xml_Xpath - Fatal编程技术网

XPath查询C#以动态拉出节点

XPath查询C#以动态拉出节点,c#,xml,xpath,C#,Xml,Xpath,我必须编写一个XPath查询,根据问题id提取问题的答案。问题id将动态传递给查询。我不能使用LINQ,因为解决方案在NET2.0中。请在下面找到XML文件 <?xml version="1.0" encoding="utf-8" ?> <Questionaire> <question id="1"> <answer>1</answer> <correctAnswer>Text</correctAn

我必须编写一个XPath查询,根据问题id提取问题的答案。问题id将动态传递给查询。我不能使用LINQ,因为解决方案在NET2.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>

1.
正文
2.
正文
我是XPath的新手,很难理解它


非常感谢

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

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

myExpression = string.Format("/*/*[id='{0}']/answer", theId);
然后,根据表示XML文档的对象,您需要调用以下方法之一:
Select()
SelectNodes()
SelectSingleNode()
Evaluate()


阅读MSDN文档,了解
XmlDocument
XPathDocument
XPathNavigator
XPathExpression

@的适当方法,OP希望选择答案,而不是问题。这可以通过计算单个XPath表达式来实现。:)非常感谢所有的贡献。最后我确实更接近于@Dimitre-answer,但在这里找到了他的答案,效果很好。再次感谢你们摇滚!