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

How to retrieve XML that contains CDATA, from Database

我需要按以下格式检索 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 组合...

你可以这样做:

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')