XPath कुछ विशेषता मान के साथ एक नोड का चयन कुछ अन्य नोड के विशेषता मान के बराबर है [बंद]


87
<grand id="grand">
  <parent>
    <child age="18" id="#not-grand"/>
    <child age="20" id="#grand"/> <!-- This is what I want to locate -->
  </parent>
</grand>

क्या कोई मुझे बता सकता है कि दूसरे बच्चे का पता लगाने के लिए कैसे व्यक्त किया जाए?

यह काम नहीं करता है ...

"/grand/parent/child[@id=concat('#',/grand/@id)]/@age"

धन्यवाद।


मुझे माफ कर दो। अभिव्यक्ति ठीक है। मैंने पाया कि मुझे अभिव्यक्ति नहीं बल्कि अन्य क्षेत्र में कुछ समस्याएं मिलीं।


3
आपका xpath मेरे लिए ठीक काम करता है।
— dogbane

3
मेरे लिए भी - बस इसे यहाँ परीक्षण किया गया है और यह दूसरे बाल तत्व का चयन करता है।
— एंड्रियास डॉक

2
ठीक है ... अभिव्यक्ति ठीक है। मुझे माफ कर दो। मैंने अभिव्यक्ति (नाम स्थान उपसर्ग) और उदाहरण दस्तावेज़ में कुछ गलतियाँ की हैं। धन्यवाद।
— जिन क्वोन

जवाबों:


95

यह XPath आपके द्वारा प्रदान किए गए कोड स्निपेट के लिए विशिष्ट है। <child>आईडी के साथ चयन करने के लिए जैसा कि #grandआप लिख सकते हैं //child[@id='#grand']।

उम्र पाने के लिए //child[@id='#grand']/@age

उम्मीद है की यह मदद करेगा


1
धन्यवाद वामन। यह मदद करता है। मेरा मतलब था एक समय के मूल्यांकन के लिए अभिव्यक्ति ('/ भव्य / @ आईडी') का मूल्य नहीं ('# भव्य') जिसका पहले मूल्यांकन किया जाना चाहिए।
— जिन क्वोन

क्या होगा यदि मेरे XML में नाम विशेषता के साथ अनुभाग की सूची है, तो उपडॉटसोर्स के रूप में चयन कैसे करें? उदाहरण: <section name="valuation"> <capital-value> some data </capital-value> <location> some data </location> </section> <section name="subject-property"> <address>72 Gordon Avenue</address> <postcode>HA7 3QS</postcode> <bedrooms>2</bedrooms> </section>
— संजय सहानी

30

मुझे लगता है कि आप यही चाहते हैं:

/grand/parent/child[@id="#grand"]

2
धन्यवाद मार्कोस। मेरा मतलब था एक समय के मूल्यांकन के लिए अभिव्यक्ति ('/ भव्य / @ आईडी') का मूल्य नहीं ('# भव्य') जिसका पहले मूल्यांकन किया जाना चाहिए।
— जिन क्वोन

2
@ jin-kwon: मैं देख रहा हूं। तो, आप XPath बस ठीक है।
— मार्कोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.