2010-10-07 26 views
16

मुझे पता है कि xpath //div[@class='class1']कैसे, कई सीएसएस वर्गों

लेकिन यह कैसे का उपयोग कर एक ही सीएसएस वर्ग जैसे

<div class="class1">1</div> 
<div class="class1">2</div> 

की DIVs की एक सूची प्राप्त करने के लिए करता है, तो एक div कई वर्गों के साथ HTML तत्वों प्राप्त करने के लिए उदाहरण के लिए

<div class="class1 class2">1</div> 

तब xpath क्या होगा?

+0

शायद यह सीएसएस रास्तों का उपयोग करने के इस समाधान के साथ – Naramsim

उत्तर

47

अभिव्यक्ति के लिए आप देख रहे हैं:

//div[contains(@class, 'class1') and contains(@class, 'class2')] 

मैं अत्यधिक XPath विजुआलाइज़र, जो आप डिबग xPath अभिव्यक्ति आसानी से मदद कर सकते हैं सुझाव देते हैं। यह यहां पाया जा सकता:

http://xpathvisualizer.codeplex.com/

+1

माइनर समस्या यह है कि यह संभावित रूप से अगर एक संभव वर्ग के नाम एक और की सबस्ट्रिंग है तोड़ने जाएगा बेहतर होगा। उदाहरण के लिए, यदि आप भी 'class11' है, यह ग़लती से इस की भरपाई कर देंगे, के रूप में यह 'Class1' में शामिल है। यह हालांकि बचने के लिए, बस सुनिश्चित वर्ग के नाम एक दूसरे को शामिल नहीं है बनाने बहुत आसान है। – Flynn1179

+0

सहमत है, लेकिन क्या 'यहाँ चर्चा की जा रही रहा है एक विशेषता की स्ट्रिंग मान स्कैनिंग शामिल है, XPath में बात करते हैं, मैं यकीन है कि अगर यह बचा जा सकता है नहीं हूँ दिया। –

+3

ठीक है, अगर यह वास्तव में जरूरी आप कर सकते थे '(concat (', @class,' '),' Class1 ') शामिल हैं' आदि, लेकिन जैसा कि मैंने कहा, यह उस के लिए की जरूरत से बचने के लिए बहुत आसान है। – Flynn1179

-1

एक उपयोगी अजगर पैकेज cssselect कहा जाता है नहीं है। ।

cssselect आयात CSSSelector से

CSSSelector ('div.gallery') पथ

एक प्रयोग करने योग्य XPath उत्पन्न करता है:

वंशज या स्वयं :: div [@class और शामिल (concat ('' ,, सामान्य अंतरिक्ष (@class) ''), 'गैलरी')]

यह बहुत Flynn1179 के जवाब के समान है।

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