XPath查找没有ID或类的元素


88

如何获取所有不带id属性的tr元素?

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

谢谢

Answers:


147

很简单:

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

这将使您tr同时缺少idclass属性的所有元素。如果您希望所有tr元素都缺少两者之一,请使用or代替and

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

当以这种方式使用属性和元素时,如果属性或元素具有值,则将其视为真实值。如果丢失,则将其视为错误。


22

如果你正在寻找一个元素具有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 + ']'); 
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.