Оценка не основанного на узле выражения Xpath (count ()) с использованием C # - PullRequest
1 голос
/ 09 декабря 2011

Мне нужно выяснить способ вычисления выражения count Xpath в C # .net.В настоящее время я перебираю XML-документ и оказываюсь на определенном узле.Мне нужно выяснить, на каком узле я сейчас нахожусь.Узел отличается по атрибуту, который имеет значение.

    <A>
     <B>
      <C> 
       <D attr="10"/>
      </C>
      <C> 
       <D attr="10"/>
      </C>
      <C> 
       <D attr="11"/>
      </C>
      <C> 
       <D attr="10"/><!--Imagine I am here...  This would be the 3rd D attr that equals 10-->
      </C>
      <C> 
       <D attr="12"/>
      </C>
     </B>
    </A>

Допустим, я в секунду, когда у меня открыт XMLDocument.И я выбрал список узлов ... Я беспокоюсь, что если я открою XpathDocument, я потеряю свою позицию в списке xmlNode.Я думаю, я мог бы получить значение attr с помощью xpath, а затем использовать XpathDocument и таким образом оценить это выражение.Я надеялся, что мог бы быть более легкий путь.

спасибо.

1 Ответ

1 голос
/ 09 декабря 2011

Используйте

(int) (theDocument.CreateNavigator()
        .Evaluate("count(/A/B/C[D/@attr = 10][3]/preceding-sibling::C) +1"))

В предоставленном XML-документе результат:

4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...