2012-06-04 14 views
6

Quiero mantener etiquetas html en mi consulta sql cuando escribo una consulta para generar etiquetas xml. Por ejemplo:¿Cómo se mantienen las etiquetas HTML cuando se consulta un xml usando sql?

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

salidas:

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

lo que debería de salida:

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

¿Cómo puedo solucionar esto? ¡Gracias!

+0

Para XML Explici yo creo http://stackoverflow.com/questions/1947884/how-to-get-sql-query-to-not-escape-html-data-returned-in-query –

Respuesta

4

Si se utiliza xhtml, creo que la conversión a Xml hará:

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

EDIT: si la columna es ntext, la conversión implícita a Xml es compatible:

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

Esto funciona bien, pero ¿qué ocurre si la variable que está convirtiendo es un ntext. – Bartman

+0

La conversión de 'ntext' a' xml' es implícita (vea [this] (http://msdn.microsoft.com/en-us/library/ms187928.aspx)). Edité mi respuesta para dar un ejemplo. –

+0

Gracias, la razón por la que pregunté sobre ntext fue porque la columna que estaba tratando de convertir era ntext y me estaba dando un error. resulta que la variable contiene un &, que no es tan amigable con xml. ¿Hay alguna manera de analizar &? – Bartman

2

a continuación fragmentos de obras de me

DECLARE @HTMLt NVARCHAR(MAX) ; 

........ 

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

Sucio pero efectivo, gracias. – Mike

Cuestiones relacionadas