Kimliği veya sınıfı olmayan öğeleri bulmak için XPath


89

İd özniteliği olmadan tüm tr öğelerini nasıl alabilirim?

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

Teşekkürler

Yanıtlar:


148

Oldukça basit:

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

Bu size tüm verecektir trhem eksik unsurları idve classnitelikleri. trİkisinden birinin eksik olduğu tüm öğelerde, orbunun yerine şunu kullanın and:

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

Öznitelikler ve öğeler bu şekilde kullanıldığında, öznitelik veya öğenin bir değeri varsa, sanki gerçekmiş gibi değerlendirilir. Eksikse yanlışmış gibi değerlendirilir.


22

Bir eleman arıyorsanız sahiptir sınıf aama değil sınıf var b, aşağıdakileri yapabilirsiniz.

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

Veya kısmi eşleşmediğinizden emin olmak istiyorsanız.

//*[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 + ']'); 
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.