2012-06-05 22 views
29

मेरे पास एक कक्षा का चयन करने के लिए एक XPath है जो मैं चाहता हूं: //div[@class='myclass']। लेकिन यह मेरे पूरे div (<div class='myclass'> भी साथ देता है, लेकिन मुझे लगता है। टैग से बिना इस टैग के केवल सामग्री को वापस चाहते हैं मैं यह कर सकता कैसे?XPath के साथ नोड मान/आंतरिक HTML कैसे प्राप्त करें?

उत्तर

30

xpath के साथ, जो चीज आपको वापस मिल जाएगी वह उस स्थिति में आखिरी चीज है जो एक शर्त नहीं है। इसका क्या मतलब है? ठीक है, परिस्थितियां बीच की चीजें हैं [] (लेकिन आप पहले से ही जानते थे) और आपका पथ एलीमेंट [जैसे पढ़ता है जिसमें मूल्य 'मेरी कक्षा'] के साथ 'वर्ग' विशेषता है। HElement [ से पहले सीधे आता है।

सभी तो [] के के बाहर सामान, पथ है तो //a/b/c[@blah='bleh']/dएक, , और घ में सब पथ तत्व हैं, blah एक विशेषता और bleh है एक शाब्दिक मूल्य। यदि यह पथ मेल खाता है तो यह आपको डी, अंतिम गैर-हालत वाली चीज़ वापस कर देगा।

आपका विशेष पथ आपके xpath के पथ में आखिरी चीज होने के नाते div की श्रृंखला (श्रृंखला) देता है। इस वापसी मूल्य में इस प्रकार आपके मामले में शीर्ष-स्तरीय नोड, div शामिल है, और इसके नीचे (उनके) बच्चे हैं। नोड तत्व या पाठ हो सकते हैं (या टिप्पणियां, प्रसंस्करण निर्देश, ...)।

एक नोड के नीचे कई टेक्स्ट नोड्स हो सकते हैं, इसलिए सरणी पोकहा वार्ता के बारे में बात करती है। x/text() एक्स, x/node() का प्रत्यक्ष बच्चा सभी पाठ नोड्स, टेक्स्ट सहित सभी पाठ देता है।

उम्मीद है कि इससे मदद मिलती है।

37
node() = innerXml 

text() = innerText 

दोनों सरणियों हैं, तो पाठ () [1] पहला बच्चों का पाठ नोड है ...

+0

एक्सएमएल में एकाधिक टेक्स्ट नोड्स कैसा दिखेंगे? क्या पाठ() चयनित आंतरिक नोड के सभी आंतरिक टेक्स्ट का एक संयोजन वापस करेगा? – CoDEmanX

+1

@CoDEmanX: '

text1text2text3
' जैसा कि मैंने कहा, यह एक ** सरणी ** है, इसलिए 'div/node() [0] == div/text() [0] == text1' नोड, और' div/नोड() [1] == अवधि 'नोड, और' div/node() [2] == div/text() [1] == text3' नोड - आपको उन्हें स्वयं को जोड़ना होगा (हाथ से या साथ एक सहायक कार्य जो सरणी स्वीकार करता है)। –

0

आप

// div [@ class = 'MyClass']/बच्चे कोशिश कर सकते हैं :: *

बच्चे :: * संदर्भ नोड के सभी तत्व बच्चों का चयन करता है see details

2

एक पुराने, अक्सर पूछे जाने वाले प्रश्न के न्यू जवाब:

इस XML के लिए

<div class="myclass">content</div> 

आप सिर्फ दो तरीकों में से एक में content चयन करने के लिए XPath का उपयोग कर सकते हैं:

  1. पाठ नोड चयन

    यह XPath,

    //div[@class='myclass']/text() 
    

    अनुरोधित अनुसार div तत्व, content के टेक्स्ट नोड बच्चों का चयन करेगा। एक तत्व

    यह XPath का

  2. स्ट्रिंग मान, के रूप में अनुरोध

    string(//div[@class='myclass']) 
    

    लक्षित div तत्व की string-value, content लौटने के लिए, फिर से होगा।

    अधिक जानकारी:

    एक तत्व नोड के string-value है तत्व की सभी पाठ नोड descendants की string-value रों के संयोजन: यहाँ एक noteस्ट्रिंग मान तत्वों की समझा है दस्तावेज़ क्रम में नोड।

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