2009-11-30 14 views
5

से पीएल/एसक्यूएल में एक्सएमएल दस्तावेज़ जेनरेट करें मुझे ओरेकल में कुछ तालिकाओं से पीएल/एसक्यूएल में एक्सएमएल दस्तावेज जेनरेट करना होगा। मैं इस से पहले कभी नहीं किया है, और मैं वहाँ पाया है यह करने के लिए कुछ तरीके हैं जिनसे होने लगते हैं:ओरेकल टेबल

  • xmldom एपीआई
  • एक्सएमएल (जैसे XmlElement, xmlagg, xmlroot के रूप में) कार्यों
  • dbms_xmlgen कार्यों

65 टेबल हैं जिन्हें एक दस्तावेज़ उत्पन्न करने के लिए संदर्भित किया जाएगा, और मुझे एक एक्सएसडी के खिलाफ आउटपुट को सत्यापित करना होगा। दस्तावेज़ बैच (ऑन-डिमांड के बजाए) में उत्पन्न किए जाएंगे - मुझे नहीं पता कि इससे कोई फर्क पड़ता है या नहीं। ओरेकल 10 जी का उपयोग करना।

मैं शुरू में xmldom पैकेज का उपयोग करने के लिए झुकाव कर रहा था क्योंकि यह अधिक लचीला दिखता था, लेकिन मुझे इसके लिए अच्छे उदाहरण या दस्तावेज़ीकरण खोजने में परेशानी हो रही है, जबकि एक्सएमएल फ़ंक्शंस बेहतर दस्तावेज और आम तौर पर अधिक लोकप्रिय लगते हैं। क्या इसका कोई कारण है?

आम तौर पर इस प्रकार के कार्य के लिए लोग किस दृष्टिकोण की सिफारिश करते हैं?

उत्तर

5

मेरे अनुभव में, DBMS_XMLGEN त्वरित और गंदे डेटा-टू-एक्सएमएल अनुवादों के लिए अच्छा है, लेकिन मुझे इसे कभी भी पसंद नहीं आया क्योंकि आपको SQL को स्ट्रिंग के रूप में पास करना होगा। इसके अलावा, तत्वों के नाम और ROWSET/ROW संरचना पर आपका नियंत्रण गंभीर रूप से सीमित है।

एक्सएमएल फ़ंक्शन बेहद आसान हैं, और मेरा पसंदीदा, यदि आप अपेक्षाकृत सरल संरचनाओं से निपट रहे हैं। एक बार जब आप एकाधिक XMLAgg स्तरों में आते हैं, उदाहरण के लिए, मुझे लगता है कि यह जल्दी से भ्रमित गड़बड़ में घूमता है।

XMLDOM एक्सएमएल उत्पन्न करने का सबसे लचीला तरीका है, खासकर यदि संरचना अधिक जटिल है या इसमें पुनरावर्तक तर्क शामिल है। यहां मुख्य दोष यह है कि यह अनिवार्य रूप से जावा डोम के चारों ओर एक रैपर है जहां अधिकांश विधियां डोमोडोड इनपुट स्वीकार करती हैं, लेकिन पीएल/एसक्यूएल सीधे पॉलिमॉर्फिज्म का समर्थन नहीं करता है, इसलिए आप डोमेलेमेंट और डोमोडोड के बीच बहुत से स्पष्ट स्थानों के साथ समाप्त होते हैं और इसके विपरीत, आदिआम तौर पर मैं इन सभी को समाहित करने के लिए अधिभारित प्रक्रियाओं का अपना पैकेज बना देता हूं और इसे काम करने के लिए थोड़ा कम दर्दनाक बनाता हूं।

+0

अन्य तरीकों की तुलना में XMLDOM के लिए प्रदर्शन (विशेष रूप से: गति) कैसा प्रदर्शन है? यह कोड न्यूनतम उत्पन्न होगा। बैच में 10k फाइलें। मुझे पता है कि यह छेड़छाड़ अनुकूलन के बारे में चिंता करने के लिए थोड़ा सा समय है, लेकिन अगर किसी विकल्प के बाद अब बहुत गंभीर प्रभाव हो सकता है, तो मैं इसके बाद बाद में फिर से लिखने की बजाय इसके बारे में चिंता करूंगा। – FrustratedWithFormsDesigner

+1

मैंने कभी तुलनात्मक उद्देश्यों के लिए प्रदर्शन को माप नहीं लिया है, लेकिन मुझे संदेह है कि इनमें से किसी भी मामले में प्राथमिक कारक परिणामों के XMLकरण से अंतर्निहित प्रश्न है। एक्सएमएलडीओएम के साथ एकमात्र "गॉचा" जिसे मैंने कठिन तरीके से खोजा है, आपको उस दस्तावेज़ के साथ किए जाने के बाद उपयोग की जा रही मेमोरी को रिलीज़ करने के लिए आपको फ्री डॉक्यूमेंट विधि को स्पष्ट रूप से कॉल करना होगा। – kurosch

2

ठीक है, मैंने कभी भी जटिल जटिल XML दस्तावेज़ उत्पन्न करने के लिए ओरेकल का उपयोग नहीं किया, लेकिन DBMS_XMLDOC का उपयोग करना काफी आसान है।

आप एक कंकाल here (और here, केवल पीएल/एसक्यूएल कोड) देख सकते हैं। Google Code Search का भी उपयोग करें, निश्चित रूप से खोजने के लिए कुछ और है।
फिर DBMS_XMLDOM reference है जो दस्तावेज़ों को सूखा होने पर भी मदद करता है।

सुनिश्चित करें कि आप भी इन दो पोस्ट पढ़ने बनाओ:
http://www.liberidu.com/blog/?p=365
http://www.liberidu.com/blog/?p=369

वैकल्पिक रूप से आप एक जावा संग्रहित प्रक्रिया का उपयोग कर एक्सएमएल पैदा करने में लग सकता है।

+0

मैंने पहले दो लिंक पहले ही देखे थे, लेकिन डीबीएमएस_एक्सएमएलओएम संदर्भ नया था। उस लिंक के लिए धन्यवाद !! – FrustratedWithFormsDesigner

2

मैं आम तौर पर एक्सएमएल फ़ंक्शंस (XMLElement, XMLForest इत्यादि) का उपयोग करता हूं क्योंकि मेरे पास एक्सएसडी पर नियंत्रण है। मैं एक्सएसडी आम तौर पर दस्तावेजों की संरचना से मेल खाता हूं, इसलिए चीजें अच्छी तरह से मिलती हैं।

स्कीमा आपके साथ काम करने की कोशिश कर रहे असाधारण जटिल या फंकी आप DBMS_XMLGEN या DOM तरीकों पर विचार करना चाहिए है।

2

यहाँ आप के लिए उपलब्ध कुछ विकल्पों में से एक अच्छी चर्चा है:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4980337843276

इसके अलावा, अगर आप "शॉन डिलन" AskTom पर आप विभिन्न समस्याओं और समाधान का उपयोग कर का ब्यौरा लेख का एक अच्छा संग्रह मिल जाएगा के लिए खोज ओरेकल के भीतर एक्सएमएल।

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