Jak za pomocą XPath wybrać węzły, które nie mają atrybutów (gdzie liczba atrybutów = 0)?
Na przykład:
<nodes>
<node attribute1="aaaa"></node>
<node attribute1="bbbb"></node>
<node></node> <- FIND THIS
</nodes>
//node[not(@*)]
To jest XPath do wybierania wszystkich węzłów o nazwie „węzeł” w dokumencie bez żadnych atrybutów.
<node class=""></node>
coś, co możemy z tym zrobić?Wybierze wszystkie <węzły> z zerowymi atrybutami
źródło
Aby odnieść się do komentarza Marka Czaplickiego i rozszerzyć odpowiedź
.... wybierze wszystkie elementy węzłów z zerowymi atrybutami LUB z atrybutami, które są wszystkie puste. Gdyby był to tylko konkretny atrybut, który Cię interesuje, a nie wszystkie, możesz użyć
... a to spowoduje wybranie wszystkich elementów węzłów, które albo nie mają atrybutu o nazwie
attribute1
OR, które mająattribute1
atrybut, który jest pusty.Oznacza to, że następujące elementy zostałyby wybrane przez którekolwiek z tych wyrażeń xpath
<nodes> <node attribute1="aaaa"></node> <node attribute1=""></node> <!--This one --> <node attribute1="bbbb"></node> <node></node> <!--...and this one --> </nodes>
Zobacz przykład jsfiddle tutaj
źródło