如何从数据库中检索包含CDATA的XML

时间:2015-04-22 17:49:34

标签: sql-server xml stored-procedures cdata

我需要以下列格式检索XML

<mv>
  <v>!CDATA[[some_inner_xml_1]]</v>
  <v>!CDATA[[some_inner_xml_2]]</v>
</mv>

我刚刚了解到<v />中的数据将是其他XML。当我认为数据将是一个整数时,我写了这个并且它起作用了

select IdentifierText as 'v' from ipmruntime.RecordsToExport where BatchID = 5 for xml path(''), Root('mv')

我试图使用语法'v!cdata' - 它不喜欢它。我不知道在哪里贴CDATA

我尝试了另一种语法

SELECT
    1 AS Tag,
    null AS Parent,
    IdentifierText as 'mv!1!v!cdata'
FROM ipmruntime.RecordsToExport
where BatchID = 5
FOR XML EXPLICIT, root('mv')

它几乎导致我需要的东西

<mv><mv><v><![CDATA[47f81be4-b54f-4703-840b-62b306c40842]]></v></mv><mv><v><![CDATA[3ba36a1f-bf75-4ed9-911e-26f10fba5587]]></v></mv></mv>

或者,如果我在同一个查询中使用'v!1',那么它会给我<mv><v></v><v></v></mv>但是CDATA会在哪里?

但是每个<v>都包含在<mv>中。显然,我对XML / SqlServer组合不太好......

1 个答案:

答案 0 :(得分:2)

你可以这样做:

select 
   1    as Tag,
   null as Parent,
   IdentifierText as [v!1!!CDATA] --[tag name!tag type!tag attribute!other optional setting]
from ipmruntime.RecordsToExport      
where BatchID = 5 
for xml explicit, root('mv')