Как найти узлы, у которых нет определенных дочерних узлов - PullRequest
3 голосов
/ 26 июля 2011

Я не смог найти точный ответ на этом сайте.HTML-код на странице содержит много элементов, некоторые из них содержат ячейки заголовка "tr", некоторые фактические ячейки данных "td"

Вот пример:

<tr align="center">
    <th width="63"><b>&nbsp;</b></th>
    <th width="293"><b>Partners</b></th>
    <th width="54"><b>Score</b></th>
    <th width="184"><b>Type of Partner</b></th>
</tr>            
<tr>
 <td>&nbsp;</td>
 <td height="17">Acme trucking</td>
 <td align="center">0.75</td>
 <td>Truck Carrier</td>
</tr>

Мне нужно найтивсе элементы "tr", которые содержат только элементы "td", другими словами, исключают все элементы, содержащие "th"

Я также хотел бы иметь еще более конкретное выражение xpath, которое будет находить только элементы "tr"которые содержат ровно 4 дочерних элемента «td».

Если вы можете предоставить 2 отдельных выражения xpath для просто trs, которые имеют только «td», и другое для «tr», которые имеют точно 4 «td», я бы действительноценю это.

Ответы [ 2 ]

4 голосов
/ 26 июля 2011
  1. //tr[td and count(td) = count(*)] или //tr[td and not(*[not(self::td)])]
  2. //tr[count(td) = 4 and count(td) = count(*)]

Если вам нужно tr только с td и без текста, например ::

<root>
    <tr>
        Text here
        <td></td>
    </tr>
</root>

Предположим, это недействительно tr, вы можете использовать:

//tr[td and count(td) = count(*) and not(normalize-space(text()))]

Допускаются только пробелы.

1 голос
/ 26 июля 2011

Мне нужно найти все элементы "tr", которые содержат только элементы "td", другими словами, исключить все элементы, которые содержат элементы "th"

//tr[not(th)]

Я также хотел бы иметь еще более конкретное выражение xpath, которое найдет только элементы "tr", которые содержат ровно 4 дочерних элемента "td".

//tr[count(td) = 4]

Это предполагает, что любой отдельный trне будет иметь td и th детей.

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