XPath для поиска элементов, которые не имеют идентификатора или класса
Как я могу получить все элементы tr без атрибута id?
<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>
Спасибо
Ответ 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'))]
Или если вы хотите быть уверены, что не должны быть частичными.
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 + ']');
}