Xml Can';t获取XPath查询以返回正确的节点集
我有一个xml文件,如下所示: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>
<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”元素的行。很奇怪。你知道的。我应该学会不要在头痛欲裂的情况下尝试编码。艾哈迈德是正确的。我之前的代码中漏掉了一个输入错误。谢谢@我很高兴听到这个消息(不是因为头痛!)。。。让我想知道还会发生什么:)