Не удается получить XPath-запрос для возврата правильного набора узлов - PullRequest
1 голос
/ 03 июня 2011

У меня есть 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>

Мне нужно выбрать все узлы ROW во всех записях, поэтому я использую что-то вроде этого:

rowiterator = Me.XMLDocument.CreateNavigator.Evaluate("//table/Row")

, который работает, но возвращает NodeIterator, который содержит только первый узел строки в первой записи!?!

Насколько я могу судить, это правильный синтаксис для xpathвыражение «вернуть все узлы строк с именем родительской таблицы в любом месте документа».

Мне не хватает чего-то простого, но я просто этого не вижу.

Любойидеи?

1 Ответ

2 голосов
/ 03 июня 2011

Вы должны использовать XPathNavigator.Select метод и перебирать итератор. Используйте свойство XPathNodeIterator.Current для доступа к текущему объекту XPathNavigator в цикле.

Dim iter = xmldoc.CreateNavigator().Select("//table/Row")
While (iter.MoveNext())
    Console.WriteLine(iter.Current.Value)
End While
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...