2011-01-05 13 views
43

मैं तालिका तालिका का चयन कैसे करूं जिसमें एक सेल है जिसमें XPath के साथ निर्दिष्ट टेक्स्ट है?XPath एक तालिका पंक्ति का चयन करने के लिए जिसमें एक सेल है जिसमें निर्दिष्ट टेक्स्ट

+1

अच्छा प्रश्न, +1। स्पष्टीकरण और समाधान के लिए मेरा उत्तर देखें। ध्यान दें कि stefan.natchev का उत्तर वांछित संपत्ति के साथ सभी पंक्तियों का चयन नहीं करता है। :) –

उत्तर

60

का उपयोग करें:

ExpressionSelectingTable/tr[td//text()[contains(., 'targetString')]] 

इसका मतलब यह है:

हर tr कि अभिव्यक्ति ExpressionSelectingTable और उस (tr) द्वारा चयनित किसी भी तालिका का एक बच्चा है है का चयन करें कम से कम एक td बच्चा है कि कम से कम एक पाठ नोड वंशज कि स्ट्रिंग 'targetString'

+0

+1 सही उत्तर। –

+4

मुझे लगता है कि आप 'ExpressionSelectingTable // tr [...]' चाहते हैं, क्योंकि पंक्तियां 'thead', 'tbody', और/या tfoot' के बच्चे हो सकती हैं। – Phrogz

+2

@Phrogz: हाँ, यह एक अच्छा अवलोकन है, धन्यवाद। मेरा एचटीएमएल थोड़ा सा जंगली है ... मैंने इसे उद्देश्य पर किया है, क्योंकि टेबल के अंदर एक टेबल हो सकती है और मैं बाहरी तालिका का चयन नहीं करना चाहता था .. –

11

कोशिकाओं कुछ पाठ तो आप इस XPath अभिव्यक्ति का प्रयोग करेंगे युक्त पंक्तियों का चयन करने के लिए:

//tr/td[normalize-space(text())="Banana"]/..

यह किसी भी td पाठ "केले" शामिल हैं और फिर उस का चयन करता है के साथ माता-पिता का चयन करता है /..

+0

यह सवाल का जवाब नहीं देता है - क्या चुना जाना चाहिए पंक्तियों जिसमें केले शामिल हैं। आपका उत्तर एक 'td' के साथ एक tr' का चयन नहीं करता है जिसमें 'सेब और केला' का मूल्य –

+0

भी है, यह एक निश्चित नोड तक पहुंचने के लिए अच्छी शैली नहीं है और फिर वापस चढ़ने के लिए - अधिकांश मामलों में समकक्ष अभिव्यक्ति मौजूद है जो केवल आगे अक्ष का उपयोग करती है। –

+0

हालांकि प्रश्न "एक" क्वेरी के लिए पूछे जाने पर, मुझे "सामान्यize_स्पेस" का उपयोग करने के बारे में यह सुझाव देखने में प्रसन्नता हो रही है जब आप टेक्स्ट को बिल्कुल व्हाइटस्पेस को छोड़कर मेल करना चाहते हैं। –

संबंधित मुद्दे

 संबंधित मुद्दे