2012-06-04 16 views
6

मैं जब मैं एक प्रश्न एक्सएमएल टैग उत्पन्न करने के लिए लिखना मेरी एसक्यूएल क्वेरी में html टैग रखना चाहते हैं। उदाहरण के लिए:एसक्यूएल का उपयोग करते हुए एक्सएमएल पूछताछ करते समय आप एचटीएमएल टैग कैसे रखते हैं?

select '<p> this is a code</p>' as code 
from table name 
for xml path (''), type 

आउटपुट:

<code>&ltp&gt; this is a code &lt/p&gt; <code> 

क्या यह उत्पादन करना चाहिए:

<code><p> this is a code </p><code> 

मैं इस का समाधान करते हैं? धन्यवाद!

+0

एक्सएमएल Explici के लिए मैं विश्वास करता हूँ। http://stackoverflow.com/questions/1947884/how-to-get-sql-query-to-not-escape-html-data-returned-in-query –

उत्तर

4

तो xhtml का उपयोग कर, मेरा मानना ​​है कि Xml करने के लिए रूपांतरण करना होगा:

select convert(xml, '<p> this is a code</p>') as code 
from table name 
for xml path (''), type 

संपादित करें: यदि स्तंभ ntext है, Xml लिए अंतर्निहित रूपांतरण समर्थित है:

create table #t(html ntext) 
insert into #t values(N'<p> this is a code</p>') 
select convert(xml, html) as code 
from #t 
for xml path (''), type 
drop table #t 
+0

यह महान काम करता है लेकिन क्या चर आप परिवर्तित कर रहे हैं अगर एक ntext। – Bartman

+0

'xml' को' ntext' से रूपांतरण निहित है (देखें [इस] (http://msdn.microsoft.com/en-us/library/ms187928.aspx))। मैंने एक उदाहरण प्रदान करने के लिए अपना जवाब संपादित किया। –

+0

धन्यवाद, कारण मैंने ntext के बारे में पूछा था क्योंकि जिस कॉलम को मैं कनवर्ट करने का प्रयास कर रहा था वह ntext था और मुझे एक त्रुटि मिल रही थी। यह वैरिएबल को एक और निहित करता है, जो xml के साथ इतना अनुकूल नहीं है। क्या पार्स करने का कोई तरीका है? – Bartman

2
के टुकड़े नीचे

लिए काम करता है मुझे

DECLARE @HTMLt NVARCHAR(MAX) ; 

........ 

SET @HTMLt = REPLACE(REPLACE(REPLACE(@HTMLt,'&amp;','&') , '&lt;','<'),'&gt;','>'); 
+1

गंदा लेकिन प्रभावी, धन्यवाद। – Mike

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