2009-01-20 7 views
9

मेरे पास एक सहयोगी है जिसे पीएल/एसक्यूएल विधि से टेक्स्ट को एक्सएमएल अनुपालन टेक्स्ट में रूपांतरित करने की आवश्यकता है, क्योंकि वह एक टेक्स्ट टेम्पलेट अपडेट करके एक्सेल स्प्रैडशीट का निर्माण कर रहा है।क्या पीएल/एसक्यूएल में टेक्स्ट को एक्सएमएल अनुपालन टेक्स्ट में कनवर्ट/एन्कोड करने का कोई तरीका है?

क्या पीएल/एसक्यूएल में पाठ को एक्सएमएल अनुपालन पाठ में कनवर्ट/एन्कोड करने के लिए कोई तरीका है?

उत्तर

15

ठीक है, अगर आप सिर्फ एक्सएमएल वर्ण परिवर्तित करना चाहते हैं, तो आप की तरह कुछ करने के लिए ... चाहता हूँ

outgoing_text := DBMS_XMLGEN.CONVERT(incoming_text) 

कहाँ outgoing_text और incoming_text दोनों VARCHAR2 या CLOB हैं।

आप एक दूसरा तर्क निर्दिष्ट कर सकते हैं, लेकिन यह DBMS_XMLGEN.ENTITY_ENCODE पर डिफ़ॉल्ट है ... यह DBMS_XMLGEN.ENTITY_DECODE को दूसरे तर्क के रूप में पास करके एक्सएमएल इकाइयों को डीकोड भी कर सकता है।

+0

धन्यवाद कि यह सब एक पाउंड प्रतीक से अलग है जो शायद कहीं एक चरित्र सेट मुद्दा है। – Bravax

+0

बस ध्यान दें, यह सीडीएटीए तत्वों के भीतर वर्णों को एन्कोड करता है। –

3

ऑरैकल के बाद के संस्करणों को XML डेटा में हेरफेर करने के लिए XML package में बनाया गया है।
उदाहरण के लिए, इस बात की तरह अपने सहयोगी करने के लिए ?:

SELECT DBMS_XMLGEN.getXML('SELECT * FROM emp') FROM dual; 
+0

यह काफी उपयोगी है, क्योंकि यह एक संपूर्ण एक्सएमएल टुकड़ा पैदा करता है, हालांकि मैं कुछ ऐसा ढूंढ रहा था जो संलग्न टैग को बिना एक्सएमएल में परिवर्तित कर देता है। – Bravax

0

hamischmcn विकल्प आसान और स्पष्ट है चाहता है, लेकिन इसे देववाणी रूपों में काम नहीं करता है, मुझे लगता है कि और कुछ भी नहीं का उपयोग कर एक बहुत कोशिश की .. । आप

utl_file.put_line_nchar (file_id, 'xml संस्करण = "1.0" एन्कोडिंग = "utf-8"') का उपयोग करके मैन्युअल रूप से xml उत्पन्न कर सकते हैं;

utl_file.put_line_nchar (file_id, 'start');

लूप जहाँ आप अपने टैग परिभाषा

utl_file.put_line_nchar लिए --A (file_id, '/ प्रारंभ');

नोट: संपादक ने मुझसे Oracle फार्म पर Rulas के मुद्दे के संबंध में <> एक्सएमएल और टैग शीर्षक

+0

धन्यवाद, लेकिन मैं कुछ ऐसा देख रहा हूं जो पाठ को एन्कोड करेगा यानी अक्षरों को उनके एक्सएमएल अनुपालन पात्रों में परिवर्तित करेगा। – Bravax

0

में संकेत डाल करने की अनुमति नहीं है, वहाँ बातें फार्म नहीं कर सकते के एक बहुत हैं (विभिन्न संस्करणों में), जहां आपको डेटाबेस पैकेज का उपयोग करने की आवश्यकता है।

तो डेटाबेस पीएल/एसक्यूएल फ़ंक्शन लिखें जो dbms_xmlgen करता है और आपके एक्सएमएल के आकार के आधार पर एक वर्चर 2 या क्लोब लौटाता है। फिर आप फॉर्म से उस फ़ंक्शन को कॉल कर सकते हैं। जब आप डेटा को वापस फॉर्म में प्राप्त करते हैं, तो XML फ़ाइल को एक्सेल में धक्का देने के लिए text_io या webutil का उपयोग करें।

या डेटाबेस पक्ष पर बने रहें और XML आउटपुट को उस निर्देशिका में धक्का देने के लिए utl_file का उपयोग करें जहां आप इसे प्राप्त कर सकते हैं।

1

dbms_xmlgen के अतिरिक्त, आप एसक्यूएल विधि, xmlelement का उपयोग कर सकते हैं और फिर मान वापस निकाल सकते हैं।

select extract(xmlelement("mytest",my_variable),'mytest/text()') from dual; 

XmlElement समारोह तो निकालने समारोह का उपयोग करके पाठ एक्सएमएल अनुरूप कर देगा, यह पाठ बाहर निकालने जाएगा के रूप में। (नोट: निकालें वैल्यू फ़ंक्शन टेक्स्ट को वापस गैर-एक्सएमएल अनुपालन संस्करण में परिवर्तित कर देगा।)।

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

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