2009-08-24 9 views
65

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

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

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

उत्तर

108
//node[not(@*)] 

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

+0

+1 दोनों में से किसी के द्वारा ही देखे जा होगा - यही कारण है कि अधिक XPath-y समाधान है। :) – Tomalak

+0

यह अच्छा है, लेकिन यह अभी भी ' 'कुछ भी हम इसके बारे में कर सकते हैं? –

+0

@MarekCzaplicki इस मामले को हल करने के लिए नीचे जवाब देखें। https://stackoverflow.com/questions/1323755/xpath-how-to-select-nodes-which-have-no-attributes/43910689#43910689 – pip

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

सभी < नोड का चयन करेंगे > शून्य के साथ जिम्मेदार बताते हैं

3

मारेक 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> 
संबंधित मुद्दे