XPath untuk menemukan elemen yang tidak memiliki id atau kelas

89

Bagaimana saya bisa mendapatkan semua elemen tr tanpa atribut id?

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

Terima kasih

priyank
sumber

Jawaban:

148

Cukup mudah:

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

Itu akan memberi Anda semua trelemen yang kekurangan keduanya iddan classatribut. Jika Anda ingin semua trelemen kekurangan salah satu dari keduanya, gunakan orsebagai pengganti and:

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

Jika atribut dan elemen digunakan dengan cara ini, jika atribut atau elemen memiliki nilai, atribut atau elemen tersebut diperlakukan seolah-olah benar. Jika tidak ada maka diperlakukan seolah-olah itu salah.

Welbog
sumber
22

Jika Anda mencari elemen yang memiliki kelas atetapi tidak memiliki kelas b, Anda dapat melakukan hal berikut.

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

Atau jika Anda ingin memastikan tidak cocok sebagian.

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

Bisakah kamu mencoba //tr[not(@id)]?

vtd-xml-author
sumber
-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 + ']'); 
    }
Om Prakash
sumber