XPath: ऐसे नोड्स का चयन कैसे करें जिनकी कोई विशेषता नहीं है?


94

XPath का उपयोग करना, उन नोड्स का चयन कैसे करें जिनकी कोई विशेषता नहीं है (जहां विशेषता गणना = 0)?

उदाहरण के लिए:

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

जवाबों:


153
//node[not(@*)]

यह XPath दस्तावेज़ में बिना किसी विशेषता के "नोड" नाम के सभी नोड्स का चयन करने के लिए है।


1
यह अच्छा है, लेकिन यह अभी भी <node class=""></node>कुछ भी पाता है जिसके बारे में हम कर सकते हैं?
मारेक

1
@MarekCzaplicki इस मामले को हल करने के लिए नीचे उत्तर देखें। stackoverflow.com/questions/1323755/…
फिल

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

शून्य विशेषताओं के साथ सभी <नोड> का चयन करेंगे


9

मारेक Czaplicki की टिप्पणी को संबोधित करने और उत्तर का विस्तार करने के लिए

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

.... शून्य विशेषताओं वाले सभी नोड तत्वों का चयन करेंगे या जिनके पास सभी खाली हैं। यदि यह उन सभी के बजाय आपकी रुचि का एक विशेष गुण था, तो आप उपयोग कर सकते हैं

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

... और यह उन सभी नोड तत्वों का चयन करेगा attribute1जिनके पास या तो कोई विशेषता नहीं है या जिनके पास एक attribute1विशेषता है जो खाली है।

अर्थात्, निम्नलिखित तत्वों को इन xpath अभिव्यक्तियों में से किसी एक द्वारा चुना जाएगा

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

Jsfiddle उदाहरण यहां देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.