How do I escape double quotes in attributes in an XML String in T-SQL?

Tom Ritter picture Tom Ritter · Mar 16, 2009 · Viewed 210.7k times · Source

Pretty simple question - I have an attribute that I would like to have double quotes in. How do I escape them? I've tried

  • \"
  • ""
  • \\"

And I've made the @xml variable both xml type and varchar(max) for all of them.

 declare @xml xml --(or varchar(max) tried both)

 set @xml = '<transaction><item value="hi "mom" lol" 
    ItemId="106"  ItemType="2"  instanceId="215923801"  dataSetId="1" /></transaction>'

 declare @xh int
 exec sp_xml_preparedocument @xh OUTPUT, @xml

 insert into @commits --I declare the table, just removed it for brevity
 select
    x.*
 from openxml(@xh,'/transaction/item')
  WITH (
    dataItemId int,
     dataItemType int,
    instanceId int,
    dataSetId int,
    value varchar(max)
  ) x

Answer

Marc Gravell picture Marc Gravell · Mar 16, 2009

Wouldn't that be &quot; in xml? i.e.

"hi &quot;mom&quot; lol" 

**edit: ** tested; works fine:

declare @xml xml

 set @xml = '<transaction><item value="hi &quot;mom&quot; lol" 
    ItemId="106"  ItemType="2"  instanceId="215923801"  dataSetId="1" /></transaction>'

select @xml.value('(//item/@value)[1]','varchar(50)')