2012-06-04 13 views
6

Voglio mantenere i tag html nella mia query sql quando scrivo una query per generare tag xml. Per esempio:Come si conservano i tag HTML quando si esegue una query su un xml utilizzando sql?

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

uscite:

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

quello che dovrebbe uscita:

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

Come posso risolvere questo problema? Grazie!

+0

Per XML Explici io credo http://stackoverflow.com/questions/1947884/how-to-get-sql-query-to-not-escape-html-data-returned-in-query –

risposta

4

Se si utilizza xhtml, credo che la conversione in Xml farà:

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

EDIT: se la colonna è ntext, conversione implicita a Xml è supportato:

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

Funziona alla grande ma cosa succede se la variabile che stai convertendo è un ntext. – Bartman

+0

La conversione da 'ntext' a' xml' è implicita (consultare [questo] (http://msdn.microsoft.com/en-us/library/ms187928.aspx)). Ho modificato la mia risposta per fornire un esempio. –

+0

Grazie, la ragione per cui ho chiesto di ntext era perché la colonna che stavo cercando di convertire era ntext e ricevevo un errore. si scopre che la variabile conteneva un &, che non è così amichevole con xml. C'è un modo per analizzare e? – Bartman

2

sotto frammenti lavora per me

DECLARE @HTMLt NVARCHAR(MAX) ; 

........ 

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

Sporco ma efficace, grazie. – Mike

Problemi correlati