Как я могу получить только самые нижние узлы определенного типа, содержащие текст с xpath? - PullRequest
0 голосов
/ 25 марта 2012

Допустим, у меня есть следующий xml:

<one>
  <two> 
    <three>
      <three>
        foo
      </three>
      <four />
      <three>
        bar
        <four />
      </three>
    </three>
  </two>
</one>

Какой запрос XPath я могу написать, который будет возвращать только эти узлы:

<three>
  foo
</three>

и

<three>
  bar
  <four />
</three>

но не этот:

<three>
  <three>
    foo
  </three>
  <four />
  <three>
    bar
    <four />
  </three>
</three>

Я пробовал это:

//three/descendant-or-self::*/text()/ancestor::three

но он возвращает тот, который мне не нужен.Я также не могу предположить, что это точная структура xml, поэтому я не думаю, что оператор .. будет работать.По сути, я хочу, чтобы младший предок текстовых узлов имел тип three.

Есть предложения?

1 Ответ

1 голос
/ 25 марта 2012

Я думаю //three[text() and not (descendant::three)] будет делать то, что вы хотите.

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