मेरे पास निम्नलिखित दस्तावेज हैं:
<a>
<bb>abc</bb>
<cc>ccc</cc>
<dd>ddd</dd>
</a>
<a>
<bb>zz</bb>
<cc>1</cc>
<dd>2</dd>
</a>
<cc>
अगर <bb>
मैं XPath का उपयोग करने का मूल्य कैसे प्राप्त zz
करूं?
मेरे पास निम्नलिखित दस्तावेज हैं:
<a>
<bb>abc</bb>
<cc>ccc</cc>
<dd>ddd</dd>
</a>
<a>
<bb>zz</bb>
<cc>1</cc>
<dd>2</dd>
</a>
<cc>
अगर <bb>
मैं XPath का उपयोग करने का मूल्य कैसे प्राप्त zz
करूं?
जवाबों:
यह निश्चित नहीं है कि हर कोई भाई-बहनों के लिए क्वेरी क्यों कर रहा है, आप यह भी देख सकते हैं <bb/>
कि-विधेय के मिलान की भविष्यवाणी के लिए जाँच करें <a/>
:
//a[bb/text() = "zz"]/cc/text()
*-sibling
अक्ष का उपयोग नहीं किया है। हालांकि +1।
आपको क्या चाहिए following-sibling
XPath धुरी
//a/bb[text()="zz"]/following-sibling::cc[1]/text()
यहाँ Xpath का परीक्षण करें: http://www.xpathtester.com/obj/b55ec3ac-dfa4-4f44-81e8-f963ea4a0625
प्रश्न: अगर सिबलिंग नोड का एक विशिष्ट मूल्य है, तो XPath का उपयोग करके नोड का चयन कैसे करें?
क्योंकि निम्नलिखित भाई-बहनों और पूर्व-भाई-बहनों के लिए केवल "एक्सपीथ एक्सिस" हैं, यदि स्थिति ठीक हो जाती है, तो आप उनमें से एक का उपयोग कर सकते हैं।
लेकिन बेहतर:
देखें cc
कि क्या माता-पिता bb
के मूल्य के साथ बच्चा है 'zz'
:
//cc[../bb='zz']
//a[bb = 'zz']/cc
।
सबसे पहले, आपका उदाहरण अच्छी तरह से गठित XML नहीं है। यह देखते हुए कि आपने अपने इरादों का बहुत अच्छी तरह से वर्णन नहीं किया है (आप वास्तव में किस स्थिति पर चयन करना चाहते हैं?), मुझे लगता है कि आप ऐसा करना चाहते हैं:
//cc[preceding-sibling::bb[text()="zz"]]/text()
इसका चयन करता है
TEXT VALUES OF ALL <CC> ELEMENTS
//cc /text()
THAT HAVE A PRECEDING SIBLING <BB>
[preceding-sibling::bb ]
THAT HAS TEXT VALUE EQUAL TO "zz"
[text()="zz"]
आप भी लिख सकते हैं
//bb[text()="zz"]/following-sibling::cc/text()
कृपया कल्पना को देखें , इसके कुछ बहुत अच्छे उदाहरण हैं , जिनसे आप बहुत कुछ सीखेंगे।
//a/cc[../bb='zz']/text()
// a: सभी 'a' एलिमेंट्स का चयन करता है चाहे वह कहीं भी हो।
// a / cc: 'cc' तत्वों का चयन करता है जो 'a' तत्व (जहां कोई भी हो) के बच्चे हैं।
..: वर्तमान नोड के जनक का चयन करता है।
[../bb='zz ']: जहां' bb 'तत्व के सिबलिंग का मान zz है।
इस समस्या का एक और समाधान है
//bb[contains(.,'zz')]/../cc/text()
स्पष्टीकरण : किसी भी बच्चे को उस उपयोग के मूल नोड में जाने वाले सभी बच्चे नोड्स bb
में 'zz'
स्ट्रिंग होती है , अब हम उस रिटर्निंग टेक्स्ट तक पहुंच सकते हैं ।bb
bb
..
cc
मुझे उम्मीद है कि स्पष्टीकरण जटिल नहीं है।