Подтвердить что ты не робот

XPath для поиска элементов, которые не имеют идентификатора или класса

Как я могу получить все элементы tr без атрибута id?

<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>

Спасибо

4b9b3361

Ответ 1

Довольно просто:

//tr[not(@id) and not(@class)]

Это даст вам все элементы tr, не имеющие атрибутов id и class. Если вы хотите, чтобы все элементы tr не имели одного из двух, используйте or вместо and:

//tr[not(@id) or not(@class)]

Когда атрибуты и элементы используются таким образом, если атрибут или элемент имеет значение, он обрабатывается так, как если бы он был истинным. Если он отсутствует, его обрабатывают как ложное.

Ответ 2

Можете ли вы попробовать //tr[not(@id)]?

Ответ 3

Если вы ищете элемент, который имеет класс a, но не имеет класс b, вы можете сделать следующее.

//*[contains(@class, 'a') and not(contains(@class, 'b'))]

Или если вы хотите быть уверены, что не должны быть частичными.

//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]

Ответ 4

    if (elm.hasAttribute('id')) { 
  //if id - implement here
                } else if (elm.hasAttribute('class')) { 
                   //if class - implement here
                } else { 
                    for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling) { 
                        if (sib.localName == elm.localName)  i++; }; 
                        segs.unshift(elm.localName.toLowerCase() + '[' + i + ']'); 
                }