xpath: как не сопоставить следующие данные - PullRequest
4 голосов
/ 30 января 2011

При просмотре источника у меня есть данные таблицы, отформатированные в точности так:

  <tr class="even">
    <td>apple</td>
    <td>pear</td>
    <td>orange</td>
    </tr>
    <tr class="odd">
    <td>apple</td>
    <td>pear</td>
    <td>&nbsp</TD>
    </tr>
  <tr class="even">
    <td>apple</td>
    <td>pear</td>
    <td>orange</td>
    </tr>

Как бы я не совпал с <td>, содержащимся во всех строках, где это происходит?

1 Ответ

5 голосов
/ 30 января 2011

Сущность &nbsp; не является чем-то, о чем XPath знает - лучше всего использовать ее эквивалентную (самоопределяющуюся) сущность символа &#xA0;

Для выбора всех tds верхнего элемента - table, который не содержит &nbsp;, используйте :

 /table/tr/td[not(contains(., '&#xA0;'))]

, чтобы выбрать все строки этой таблицы так, чтобы ни один из их td потомковсодержит &nbsp; use :

 /table/tr[not(td[contains(., '&#xA0;')])]

Чтобы выбрать все td дочерние элементы всех строк этой таблицы, чтобы ни один из их td дочерних элементов не содержал &nbsp; use :

 /table/tr[not(td[contains(., '&#xA0;')])]/td
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...