Xml Can';t获取XPath查询以返回正确的节点集

Xml Can';t获取XPath查询以返回正确的节点集,xml,vb.net,xpath,Xml,Vb.net,Xpath,我有一个xml文件,如下所示: <Records> <Record> <table> <Row> <col1>value1</col1> </Row> </table> </Record> <Record> <table> <Row> <col1>value2</col1> </Row>

我有一个xml文件,如下所示:

<Records>
<Record>
 <table>
  <Row>
   <col1>value1</col1>
  </Row>
 </table>
</Record>
<Record>
 <table>
  <Row>
   <col1>value2</col1>
  </Row>
 </table>
</Record><Record>
 <table>
  <Row>
   <col1>value3</col1>
  </Row>
 </table>
</Record>
</Records>
rowiterator = Me.XMLDocument.CreateNavigator.Evaluate("//table/Row")
它正在工作,但它返回的节点运算符仅包含第一条记录中的第一行节点

据我所知,这是xpath表达式“返回文档中任何位置具有父表名的所有行节点”的正确语法

我肯定错过了一些简单的东西,但我就是看不到

有什么想法吗?

您应该使用and循环遍历迭代器。使用访问循环中当前的
XPathNavigator
对象

Dim iter = xmldoc.CreateNavigator().Select("//table/Row")
While (iter.MoveNext())
    Console.WriteLine(iter.Current.Value)
End While

因此,当您使用MoveNext()或foreach语句进行迭代时,您只能在第一个节点断开之前到达它?如果您尝试按照此思路进行操作?@Ken是的,当我检查返回的NodeIterator的计数时,它显示为1。我本以为它会显示3。我也试过了。当我检查iter.Count时,我看到的是1,而不是我预期的3。果然,当我遍历时,我只得到第一个“record”元素的行。很奇怪。你知道的。我应该学会不要在头痛欲裂的情况下尝试编码。艾哈迈德是正确的。我之前的代码中漏掉了一个输入错误。谢谢@我很高兴听到这个消息(不是因为头痛!)。。。让我想知道还会发生什么:)