XPath: Bagaimana memilih node yang tidak memiliki atribut?


95

Menggunakan XPath, bagaimana memilih node yang tidak memiliki atribut (di mana jumlah atribut = 0)?

Sebagai contoh:

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1="bbbb"></node>
    <node></node> <- FIND THIS
</nodes>

Jawaban:



23
//node[count(@*)=0]

Akan memilih semua <node> dengan atribut nol


9

Untuk menjawab komentar Marek Czaplicki dan memperluas jawabannya

//node[not(@*) or not(string-length(@*))]

.... akan memilih semua elemen node dengan atribut nol ATAU yang memiliki atribut yang semuanya kosong. Jika itu hanya atribut tertentu yang Anda minati, bukan semuanya, Anda dapat menggunakan

//node[not(@attribute1) or not(string-length(@attribute1))]

... dan ini akan memilih semua elemen node yang tidak memiliki atribut bernama attribute1OR yang memiliki attribute1atribut kosong.

Artinya, elemen berikut akan dipilih oleh salah satu ekspresi xpath ini

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1=""></node> <!--This one -->
    <node attribute1="bbbb"></node>
    <node></node> <!--...and this one -->
</nodes>

Lihat contoh jsfiddle di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.