2011-02-16 18 views
5

मेरे पास एक्सएमएल कोड के साथ एक स्ट्रिंग है, मैं पीएल/एसक्यूएल में एक वैरिएबल से एक मान निकालना चाहता हूं।पीएलएसक्यूएल एक्सएमएल से मूल्य पढ़ता है?

एक्सएमएल बहुत सरल है और इस से अलग नहीं होगा:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
     <SOAProxyResponse xmlns="http://tempuri.org/"> 
      <SOAProxyResult> 
       There is 23142 Files! 
      </SOAProxyResult> 
     </SOAProxyResponse> 
    </s:Body> 
</s:Envelope 

मैं मान "23,142 फ़ाइलें नहीं है!" एक चर में ऊपर के उदाहरण में कैसे मिल सकता है?

उत्तर

9

आप इस मूल्य प्राप्त करने के लिए EXTRACTVALUE फ़ंक्शन का उपयोग कर सकते हैं: अपने कैसे भंडारण कर रहे हैं/अपने XML डेटा पकड़े। यह फ़ंक्शन दो या तीन पैरामीटर लेता है:

  • एक XMLTYPE ऑब्जेक्ट जिसमें एक XML दस्तावेज़ है।
  • एक XPath अभिव्यक्ति जो यह पहचानती है कि एक्सएमएल में जहां मूल्य हम चाहते हैं।
  • (वैकल्पिक) एक अतिरिक्त स्ट्रिंग जो यूआरआई को नेमस्पेस उपसर्गों को बांधती है।

नीचे दी गई क्वेरी में, मैंने ऊपर दिए गए एक्सएमएल को एक स्ट्रिंग के रूप में प्रस्तुत किया है और इससे XML XMLPE ऑब्जेक्ट बनाया है। मैं तो EXTRACTVALUE का उपयोग मूल्य आप के लिए कहा पाने के लिए:

SELECT EXTRACTVALUE(XMLTYPE(
    '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
     <s:Body> 
      <SOAProxyResponse xmlns="http://tempuri.org/"> 
       <SOAProxyResult> 
        There is 23142 Files! 
       </SOAProxyResult> 
      </SOAProxyResponse> 
     </s:Body> 
    </s:Envelope>'), '//SOAProxyResult', 'xmlns="http://tempuri.org/"') AS result 
    FROM dual; 

XPath अभिव्यक्ति //SOAProxyResult केवल दस्तावेज़ में सभी SOAProxyResult तत्वों देता है। EXTRACTVALUE पर तीसरा तर्क डिफ़ॉल्ट नामस्थान को http://tempuri.org/ पर बांधता है। यह आवश्यक है क्योंकि आपके XML दस्तावेज़ में SOAProxyResult तत्व इस नामस्थान के भीतर है।

 
RESULT 
-------------------------------------------------------------------------------- 

        There is 23142 Files! 

यहाँ से, यह उम्मीद है कि एक चर में इस क्वेरी के परिणाम डाल करने के लिए एक छोटी सी संशोधन किया जाना चाहिए:

अगर मैं इस क्वेरी चलाने के लिए, मैं निम्नलिखित उत्पादन मिलता है।

+0

यह मेरे लिए कार्यकर्ता है। धन्यवाद! – Ricardo

1

वहाँ ओरेकल पत्रिका में एक अच्छा लेख एक समय पहले था - जो आपकी मदद कर सकता है:

http://www.oracle.com/oramag/oracle/01-jul/o41xml.html

एक और बात यह है कि हम काफी सामान्यतः यहाँ का उपयोग XMLType एपीआई है, लेकिन निश्चित रूप से उस पर निर्भर

http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96616/arxml24.htm

+0

धन्यवाद, मैं इसमें खोदने की कोशिश करूंगा ;-) –

+0

मैं इन मानों को पढ़ने के लिए एक आसान तरीका नहीं समझ सकता! –

+0

इसकी वजह यह है कि यह उतना आसान नहीं है जितना आप इसे करना चाहते हैं! – diagonalbatman

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