2012-01-25 10 views
10

मैं निम्नलिखित पथ है:कोलेसे ऑपरेटर के XPath समकक्ष क्या है?

  • /मेरी: कंपनी/Ns1 भी: लेखा परीक्षा/Ns1 भी: यात्रा/Ns1 भी: customField10
  • /मेरी: कंपनी/Ns1 भी: लेखा परीक्षा/Ns1 भी: यात्रा/Ns1 भी: ACCOUNTNUMBER

मैं ns1 का चयन करना चाहता हूं: कस्टमफिल्ल्ड 10 यदि यह खाली नहीं है, अन्यथा मैं ns1: खाता संख्या वापस करना चाहता हूं।

xml.SelectSingleNode(
    "(/my:cobius/ns1:Audit/ns1:Visit/ns1:customField10 | 
    /my:cobius/ns1:Audit/ns1:Visit/ns1:accountNumber)", ns) 

लेकिन यह हमेशा AccountNumber लौटा रहा है:

मैं निम्नलिखित की कोशिश की। मैंने कस्टम फ़ील्ड 10 और खाता संख्या के आदेश को फ़्लिप करने का प्रयास किया, लेकिन कोई खुशी नहीं। यह अभी भी खाता संख्या लौटाता है।

मैं XPath में कोलेसे ऑपरेटर के बराबर कैसे कर सकता हूं?

अद्यतन:

यहाँ अंतिम कोड है: यदि नोड (SQL में एक शून्य के बराबर की तरह) याद आ रही थी

xml.SelectSingleNode(
    "(/my:company/ns1:Audit/ns1:Visit/ns1:customField10[normalize-space()] | 
    /my:company/ns1:Audit/ns1:Visit/ns1:accountNumber[not(normalize-space(../ns1:customField10))])", ns) 
+0

क्यों नहीं 'xml.SelectSingleNode()' दोनों नोड्स और एक सामान्य 'अगर ...' उसके बाद के लिए:

आप निश्चित रूप से एक विधेय जोड़ सकते हैं? – Tomalak

+1

यदि आपने हमें बताया कि कोलेसे ऑपरेटर क्या है, या किसी भी दर पर, आप जिस तकनीक के बारे में सोच रहे हैं, उसके पास ऐसा ऑपरेटर है, तो आपके प्रश्न का उत्तर देना आसान हो सकता है। –

+0

@ टोमालक इसी कारण से मैं एसक्यूएल या सी # में एक कोलेस ऑपरेटर का उपयोग करूंगा। दो चर निर्दिष्ट करने और चेक करने के बजाय इनलाइन क्यों नहीं करें? –

उत्तर

5

आपका कोड काम करेगा। लेकिन खाली नहीं है (एसक्यूएल में एक खाली स्ट्रिंग की तरह)।

/my:cobius/ns1:Audit/ns1:Visit/ns1:customField10[string-length(.)] | /my:cobius/ns1:Audit/ns1:Visit/ns1:accountNumber 
+0

दरअसल, '/ foo [स्ट्रिंग-लम्बाई)) की तरह अधिक |/बार [नहीं (/ foo [स्ट्रिंग-लम्बाई()])] – Tomalak

+0

'| 'किसी प्रकार का शॉर्ट सर्किटिंग लॉजिकल-या नहीं है। यह एक संघ ऑपरेटर है। दूसरे शब्दों में, यदि दोनों मौजूद हैं, तो आप दोनों ही प्राप्त करेंगे, जो ओपी चाहता है। –

+0

@lwburk: जरूरी नहीं, ऊपर टिप्पणी देखें। ;) – Tomalak

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