How to insert xml node in Sql Server without inserting empty namespace? -
यह एक उदाहरण है कि मेरा स्रोत XML कैसे दिखता है
& lt; catalog xmlns = " http://schemas.example.com/stuff/stuff"> & Lt; स्ट्रिंग कुंजी = "नाम" टैग = "22 ए 41320-बीबी66 -41 ए 9-8806-760 डी 1 3679 सी 6 सी" & gt; दस्तावेज़ शीर्षक 1 & lt; / स्ट्रिंग & gt; & Lt; स्ट्रिंग कुंजी = "नाम" टैग = "023463cf-9237-45b6-ac3f-621b9b09f609" & gt; दस्तावेज़ 2 का शीर्षक & lt; / स्ट्रिंग & gt; & Lt; / सूची & gt;
मैं स्ट्रिंग नोड्स के माध्यम से लूप की योजना बना रहा हूं और उन्हें नोडल नोड्स में बदलना है (यह केवल लूप का पहला चलना दिखाता है)। हालांकि, जब मैं नया नोड सम्मिलित करता हूँ, यह एक खाली नाम स्थान को सम्मिलित करता है I यह मेरा परिणाम है:
& lt; कैटलॉग xmlns = "http://schemas.example.com/stuff/stuff" & gt; & Lt; स्ट्रिंग कुंजी = "नाम" टैग = "023463cf-9237-45b6-ac3f-621b9b09f609" & gt; दस्तावेज़ 2 का शीर्षक & lt; / स्ट्रिंग & gt; & Lt; दस्तावेज़ xmlns = "" कुंजी = "दस्तावेज़ शीर्षक 1" हैंडल = "22 ए 41320-बीबी 66-41 ए 9-8806-760 डी 1 3679 सी 6 सी" / & gt; & Lt; / सूची & gt;
खाली नामस्थान देखें। मैं पूरी तरह से दस्तावेज़ नोड पर नामस्थान को छोड़ना चाहता हूं।
यहां का परिणाम मुझे चाहिए
& lt; catalog xmlns = "http://schemas.example.com/ सामान / सामान "& gt; & Lt; स्ट्रिंग कुंजी = "नाम" टैग = "023463cf-9237-45b6-ac3f-621b9b09f609" & gt; दस्तावेज़ 2 का शीर्षक & lt; / स्ट्रिंग & gt; & Lt; दस्तावेज़ कुंजी = "दस्तावेज़ शीर्षक 1" हैंडल = "22 ए 41320-बीबी66 -41 ए 9-8806-760 डी 1 3679 सी 6 सी" / & gt; & Lt; / सूची & gt;
यहाँ एक पूर्ण क्वेरी है जिसके साथ आप खेल सकते हैं:
घोषित @temp xml, @newNode xml; सेट @temp = cast ('& lt; कैटलॉग xmlns = "http://schemas.example.com/stuff/stuff" & gt; & lt; स्ट्रिंग कुंजी = "नाम" टैग = "22a41320-bb66-41a9-8806-760d13679c6c" & Gt; दस्तावेज़ शीर्षक 1 & lt; / स्ट्रिंग & gt; & lt; स्ट्रिंग कुंजी = "नाम" टैग = "023463cf-9237-45b6-ac3f-621b9b09f609" & gt; दस्तावेज़ 2 का शीर्षक & lt; / स्ट्रिंग & gt; & lt; / Catalog & gt; जैसा कि xml) चुनें 'पहले', @temp सेट @newNode = CAST ('& lt; दस्तावेज़ कुंजी =' '+ @ temp.value (' डिफ़ॉल्ट तत्व नामस्थान घोषित करें "http://schemas.example.com/stuff/stuff"; (/ Catalog / स्ट्रिंग / टेक्स्ट ()) [1] ',' varchar (max) ') +' 'हैंडल =' '+ @ temp.value (' डिफ़ॉल्ट तत्व नामस्थान घोषित करें '' http://schemas.example.com/stuff/ सामग्री "(/ सूची / स्ट्रिंग / @ टैग) [1] ',' varchar (50) ') +'" / xml के रूप में सेट करें @ temp.modify ('डिफ़ॉल्ट तत्व नामस्थान घोषित करें' http: // Schemas.example.com/stuff/stuff "; सम्मिलित करें sql: चर (" @ newNode ") में (/ सूची) [1] ') सेट @ temp.modify (' डिफ़ॉल्ट तत्व नामस्थान घोषित करें 'http: //schemas.example .com / stuff / stuff "; हटाएं (/ कैटलॉग / स्ट्रिंग) [1] ')' के बाद 'का चयन करें, @temp
<INSERT
के साथसंशोधित करें
का उपयोग करके और प्रयोग करने के बजाय / pre>
और हटाएं
, इच्छा नोड्स को क्यों न बदलें:
घोषित @temp xml, @newNode xml; सेट @temp = cast ('& lt; कैटलॉग xmlns = "http://schemas.example.com/stuff/stuff" & gt; & lt; स्ट्रिंग कुंजी = "नाम" टैग = "22a41320-bb66-41a9-8806-760d13679c6c" & Gt; दस्तावेज़ शीर्षक 1 & lt; / स्ट्रिंग & gt; & lt; स्ट्रिंग कुंजी = "नाम" टैग = "023463cf-9237-45b6-ac3f-621b9b09f609" & gt; दस्तावेज़ 2 का शीर्षक & lt; / स्ट्रिंग & gt; & lt; / Catalog & gt; as xml) SELECT CAST (REPLACE (CAST (@temp AS NVARCHAR (MAX)), 'स्ट्रिंग', 'कैटलॉग') एसएएम)
Comments
Post a Comment