我需要以下列格式检索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组合不太好......
答案 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')