XPath | выражение пути .Net

<?xml version="1.0" encoding="UTF-8"?>
<Country>
  <States>
    <County>
      <popularity>39</popularity>
      <name>Orange</name>
      <id>13811</id>
      <url>http://www.url.gov</url>
      <overview>Orange County Overview</overview>
      <Cities>
        <City name="City #1" size="big" population="33333"/>
        <City name="City #2" size="medium" population="2222"/>
        <City name="City #3" size="Small" population="111"/>
      </Cities>
    </County>
  </States>
</Country>

Что эквивалентно выражению XPath «select [cities] where [name] = 'Orange'» »для приведенного выше XML?

Изменить 27.07.09, 00:29 по тихоокеанскому времени:

I got it! Thank you all for the advices, you are are great teachers. I was able to select all attributes from all"City" with

/Country/States/County[name='Orange']/Cities/City


person Community    schedule 27.07.2009    source источник
comment
Не могли бы вы уточнить, какие элементы вы хотите выбрать и какой элемент / атрибут вы хотите отфильтровать? (вы хотите, чтобы все элементы ‹City› или все элементы ‹Cities›)   -  person Mads Hansen    schedule 27.07.2009
comment
Я хотел получить все атрибуты один за другим из всех ‹City›. Спасибо, ребята, за ответы.   -  person    schedule 27.07.2009


Ответы (1)


//Cities[../name="Orange"]/*

Предикат в скобках [../name="Orange"] примерно эквивалентен предложению where.

person vog    schedule 27.07.2009
comment
/Country/States/County/Cities[../name='Orange '] было бы лучше. Двойные слэши ужасно неэффективны. С образцом документа нет ничего страшного, но для больших документов он помогает исключить полное сканирование дерева. - person Mads Hansen; 27.07.2009
comment
Двойные слэши ужасно неэффективны ?! По моему опыту, оператор зависимых () довольно эффективен по сравнению с проверкой имен всего пути к элементам XML. Однако это зависит от индекса, который использует реализация XPath. - person vog; 27.07.2009