2012-08-02 14 views
37

मैं इस HTML है: अतिरिक्त व्हाइट बिना: (00 16) स्ट्रिंगxpath एक्सप्रेशन दूर करने के लिए खाली स्थान के

<tr class="even expanded first> 
    <td class="score-time status"> 
    <a href="/matches/2012/08/02/europe/uefa-cup/"> 

      16 : 00 

    </a> 
    </td>   
    </tr> 

मैं निकालना चाहते हैं। क्या यह संभव है?

+3

कार्यान्वयन का उपयोग - PHP, या क्या? XPath नोड्स की पुनर्प्राप्ति से संबंधित है, स्ट्रिंग हैंडलिंग नहीं। व्हाट्स स्पेस के किसी भी हटाने को * पुनर्प्राप्ति के बाद * अलग से करने की आवश्यकता होगी। – Utkanos

+0

मुझे लगता है कि रिक्त स्थान – adellam

+0

के बिना वांछित पाठ प्राप्त करने के लिए एक अभिव्यक्ति है यदि हम php (जिसे मैंने किसी भी तरह से एचटीएमएल के बारे में माना है) के बारे में बात कर रहे हैं, तो आप प्रीमवे व्हाइटस्पेस को DOMDocument ऑब्जेक्ट पर झूठी पर सेट कर सकते हैं, जिसके परिणामस्वरूप स्वचालित अनावश्यक सफेद जगह को हटाने। http://www.php.net/manual/de/class.domdocument.php#domdocument.props.preservewhitespace – inVader

उत्तर

-11

एक xpath-Expressen साथ टैग की अंदरूनी सामग्री प्राप्त करें, तो ट्रिम() (php संभालने आप उपयोग कर रहे) या कुछ बराबर फ़ंक्शन का उपयोग दूर शुरुआत या अंत में किसी भी खाली स्थान के कटौती करने के लिए।

+0

क्या आप अधिक जानकारी पोस्ट कर सकते हैं pls। – adellam

+4

शून्य 1 क्योंकि प्रश्न यह है कि इसे XPath के साथ कैसे करें, PHP नहीं ... – Borna

1
  • आप जांच सकते हैं कि पाठ() नोड खाली हैं या नहीं।

    /path/text()[not(.= '')]

यह निम्न-भाई की तरह कुल्हाड़ियों के साथ उपयोगी हो सकता है :: अगर इन में कोई कंटेनर हैं, या बच्चे के साथ ::।

  • आप स्ट्रिंग() या regex() xpath के समारोह का उपयोग कर सकते 2.

नोट: कुछ टिप्पणियों का कहना है कि xpath स्ट्रिंग परिवर्तन नहीं कर सकते ... भले ही वह वास्तव में उस के लिए डिज़ाइन नहीं किया गया आप मूल बातें कर सकते हैं: इसमें(), शुरू होता है(), प्रतिस्थापित करें()।

यदि आप व्हाइटस्पेस नोड्स को देखना चाहते हैं तो यह बहुत कठिन है, क्योंकि आपके पास आम तौर पर नोडेलिस्ट परिणाम सेट होगा, और अधिकांश एक्सपैथ फ़ंक्शंस जैसे मैच या प्रतिस्थापन, केवल एक नोड संचालित करते हैं।

  • आप नोड और स्ट्रिंग परिवर्तन

अलग कर सकते हैं तो तुम एक कंटेनर, या पाठ नोड्स की सूची प्राप्त करने के लिए xpath का उपयोग कर सकते हैं, और फिर किसी अन्य भाषा के साथ इसे संसाधित। (उदाहरण के लिए जावा, PHP, पायथन, perl)।

translate(normalize-space(/tr/td/a), ' ', '') 

स्पष्टीकरण:

90

मैं इस एक XPath अभिव्यक्ति उपयोग

  1. normalize-space() अपने तर्क से एक नई स्ट्रिंग, पैदा करता है, जिसमें उसके आगे या सफेद अनुगामी -स्पेस (स्पेस, टैब, एनएल या सीआर अक्षर) हटा दिया गया है और किसी भी मध्यस्थ सफेद-स्थान को एक ही स्थान से बदल दिया गया है चरित्र।

  2. translate() परिणाम normalize-space() द्वारा उत्पादित लेता है और एक नया स्ट्रिंग, जिसमें शेष मध्यस्थ रिक्त स्थान की प्रत्येक रिक्त स्ट्रिंग से प्रतिस्थापित हो जाता है।


द्वितीय।वैकल्पिक रूप से:

translate(/tr/td/a, ' &#9;&#10;&#13', '') 
+1

बहुत अच्छा काम करता है! मैं एक इंफोपाथ टेम्पलेट में एक फ़ील्ड को जल्दी से साफ कर रहा था जिसे मैं बना रहा था। – Shrout1

+0

@ श्राउट 1, आपका स्वागत है। –

+0

क्या कोई XML फ़ाइल हालांकि सीडीएटीए नोड्स प्राप्त करने के लिए सबसे छोटी XPATH अभिव्यक्ति है? –

9

नीचे xpath एक्सप्रेशन प्रयास करें:

कई मामलों में हम भी XPath समारोह सामान्य अंतरिक्ष उपयोग कर सकते हैं(), जो अपने स्ट्रिंग तर्क से दूसरे स्ट्रिंग पैदा करता है, जिसमें के समूहों अग्रणी और पिछली सफेद जगह काट दिया जाता है, और स्ट्रिंग के भीतर हर सफेद जगह को एक ही स्थान से बदल दिया जाता है।

ऊपर मामले में, हम केवल निम्नलिखित XPath अभिव्यक्ति का उपयोग करेगा:

/*/aChild [सामान्य अंतरिक्ष() = 'नमस्ते विश्व']

तो,

// टीडी [@ वर्ग = 'स्कोर-टाइम स्थिति']/एक [सामान्यीकृत-स्थान() = '16: 00 ']

+0

के लिए देख रहे पाठ के लिए कुछ और (एक सबस्ट्रिंग की तरह) जानते हैं तो आप इन नोड्स को भविष्यवाणी के साथ फ़िल्टर कर सकते हैं। इस उत्तर में मदद मिली और मेरे लिए सबसे सरल था – Michal

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