खोज…


कुछ पाठ के साथ सभी तत्वों का पता लगाएं

निम्नलिखित XML की कल्पना करें:

<root>
    <element>hello</element>
    <another>
        hello
    </another>
    <example>Hello, <nested> I am an example </nested>.</example>
</root>

निम्नलिखित XPath अभिव्यक्ति:

//*[text() = 'hello']

<element>hello</element> तत्व लौटाएगा, लेकिन <another> तत्व नहीं। ऐसा इसलिए है क्योंकि <another> तत्व में hello पाठ के आसपास व्हाट्सएप है।

दोनों <element> और <another> को पुनः प्राप्त करने के लिए, कोई भी उपयोग कर सकता है:

//*[normalize-space(text()) = 'hello']

या

//*[normalize-space() = 'hello']

जो तुलना करने से पहले आसपास के व्हाट्सएप को ट्रिम कर देगा। यहां हम देख सकते हैं कि normalize-space का उपयोग करते समय text() नोड स्पेसिफिक वैकल्पिक normalize-space

विशिष्ट टेक्स्ट वाली एक तत्व को खोजने के लिए, आप उपयोग कर सकते हैं contains कार्य करते हैं। निम्नलिखित अभिव्यक्ति <example> तत्व को लौटाएगी:

//example[contains(text(), 'Hello')]

यदि आप ऐसे टेक्स्ट को ढूंढना चाहते हैं जो कई बच्चों / टेक्स्ट नोड्स को फैलाते हैं, तो आप उपयोग कर सकते हैं . text() बजाय text(). तत्व की संपूर्ण पाठ सामग्री को संदर्भित करता है और यह बच्चे हैं।

//example[. = 'Hello,  I am an example .']

कई टेक्स्ट नोड्स देखने के लिए, आप उपयोग कर सकते हैं:

//example//text()

जो वापस आएगा:

  • "नमस्कार, "
  • "मैं एक उदाहरण हूं"
  • "।"

और अधिक स्पष्ट रूप से एक तत्व की संपूर्ण पाठ सामग्री को देखने के लिए, एक string फ़ंक्शन का उपयोग कर सकता है:

string(//example[1])

या केवल

string(//example)

हैलो, मैं एक उदाहरण हूं।

उत्तरार्द्ध काम करता है, क्योंकि अगर नोड-सेट को string जैसे कार्यों में पारित किया जाता है, तो XPath 1.0 बस उस नोड-सेट में पहले नोड (दस्तावेज़ क्रम में) को देखता है, और बाकी को अनदेखा करता है।

इसलिए:

string(/root/*)

लौटूंगा:

नमस्कार



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow