8
मैं वर्तमान में सभी टीआर कि एक टीडी कि 'User Name'
या 'User Name'
या ' User Name '
लेकिन इसके काम नहीं कर शामिल होते हैं पाने के लिए निम्न xpathसामान्यीकृत-स्पेस() xpath फ़ंक्शन को काम करने के लिए कैसे प्राप्त करें?
//tr[normalize-space(td/text())='User Name']
कोशिश कर रहा हूँ और मैं नहीं जानता कि क्या क्वेरी के साथ कुछ गलत है :(
डेटा मैं पता लगाना चाहते हैं निम्न स्वरूप में है
<tr><td>User Name</td></tr>
<tr><td>User Name</td></tr>
<tr><td> User Name </td></tr>
तो सही प्रारूप इस xpath क्वेरी लिखने के लिए क्या है?
संपादित करें: यह अगर डेटा तो अब मैं कैसे xpath क्वेरी लिख सकते हैं निम्न स्वरूप
<tr><td>x</td><td>User Name</td></tr>
<tr><td>x</td><td>y</td><td>User Name</td></tr>
<tr><td>x</td><td>y</td><td>z</td><td> User Name </td></tr>
में है काम नहीं लगते?
नोट: "// tr [normalize-space (td/text()) = 'उपयोगकर्ता नाम']" काम नहीं करेगा
लेकिन "// tr/td [normalize-space (text()) = 'उपयोगकर्ता का नाम '] "काम करेंगे (लेकिन मैं और टीआर प्राप्त करना चाहते हैं नहीं टीडी तत्व)
कृपया
@ पावेल मिनेव: हो गया :) – Karim
सब कुछ पहली नज़र में ठीक दिखता है। मुझे संदेह है कि समस्या क्वेरी के साथ नहीं है, लेकिन आप परिणामों का उपयोग कैसे करते हैं। क्या आप संदर्भ में क्वेरी दिखा सकते हैं - यदि यह एक्सएसएलटी है, तो एक्सएसएलटी कोड जो इसे कॉल करता है और परिणामों का उपयोग करता है, यदि यह सी # कोड सीधे है, तो वह कोड। –
उत्तर
अब जब आपने प्रश्न संपादित किया है, तो यह समझ में आता है। के इस इनपुट पर विचार करें:
और अपने गैर काम कर क्वेरी:
अब,
td/text()
का अर्थ है "सभी बच्चे वर्तमान नोड केtd
नोड्स के सभी बच्चे पाठ नोड्स का चयन करें"। इस मामले में यह एक नोड-सेट उत्पन्न करेगा जिसमें दो टेक्स्ट नोड्स,x
औरUser Name
शामिल होंगे।अब आप उस नोड-सेट पर
normalize-space()
पर कॉल करें।normalize-space()
का एकमात्र तर्क प्रकारstring?
है। के बाद से एक नोड-सेट एक स्ट्रिंग नहीं है, रूपांतरण, में लात XPath 1.0 सिफारिश के section 3.2 प्रति:अब खंड 4.2 में स्ट्रिंग() की definition को देखो:
हमारे उदाहरण में, "दस्तावेज़ ऑर्डर में" पहला नोड टेक्स्ट नोड
x
है, इसलिए यह वह होगा जिसका उपयोग किया जाएगा; दूसरा नोड अनदेखा किया जाता है। इस प्रकार, आपnormalize-space('x')
पर कॉल करना समाप्त कर देते हैं। स्वाभाविक रूप से, यह 'उपयोगकर्ता नाम' के बराबर तुलना नहीं करेगा।यह काम, उपयोग करने के लिए:इस रूप में लिखित जा सकता है "सभी
tr
नोड्स है कि बच्चेtd
नोड्स का चयन करें, पहले बच्चेtext()
नोड जिनमें सेUser Name
की एक सामान्यीकृत स्ट्रिंग मान है" - जो क्या है आप चाहते हैं। नो-तर्कnormalize-space()
के बाद से(जो
td
हो जाएगा) वर्तमान नोड के लिए लागू होगा, और भीतर सभी पाठ नोड्स पर कार्रवाई: इसके अलावा, आप को यह सरल बना सकते हैं।स्रोत
2009-12-01 22:35:33
यह यहाँ ठीक काम करता है:
आप एक वास्तविक एक्सएमएल नमूने के साथ अपने प्रश्न अपडेट कर लें कर सकते हैं?
स्रोत
2009-12-01 22:07:34
actuall फ़ाइल एक बड़ा है इसलिए अपलोड करने के लिए यह संभव नहीं है। लेकिन नमूना आपके जैसा है लेकिन यह मेरे लिए काम नहीं कर रहा है, लेकिन यह मेरे लिए काम नहीं कर रहा है – Karim
आपको पूरी फ़ाइल अपलोड करने की आवश्यकता नहीं है, केवल छोटी टुकड़ा जहां आपको समस्याएं हैं –
अच्छी तरह से मुझे पता चला कि समस्या थी और मैंने अपना नमूना – Karim
संबंधित मुद्दे