小编Mav*_*yak的帖子

将查询结果存储在Xml变量中时,如何保留CDATA标记?

当我使用For Explicit在Sql Server 2008 R2中生成Xml(因为我的消费者想要CDATA中包含的元素之一)并将结果存储在Xml变量中时,我想要包装在CDATA标记中的数据不再包含在CDATA标记中.如果我不将For Xml Explicit结果推送到Xml变量中,则保留CDATA标记.我使用@Xml变量作为.Net的SqlParameter.

在这个例子中,第一选择(选择@xml)并没有有2号线包裹在CDATA标签.但是第二个选择(用于填充@Xml变量的相同查询)确实包含了包装Line2列的CDATA标记.

Declare @Xml Xml

Begin Try
    Drop Table #MyTempTable
End Try
Begin Catch
End Catch

Select
    'Record' As Record
    , 'Line1' As Line1
    , 'Line2' As Line2
Into
    #MyTempTable

Select @Xml =
(
    Select
        x.Tag
        , x.Parent
        , x.[Root!1]
        , x.[Record!2!Line1!Element]
        , x.[Record!2!Line2!cdata]
    From
        (
            Select
                1 As Tag, Null As Parent
                , Null As [Root!1]
                , Null As [Record!2!Line1!Element]
                , Null As [Record!2!Line2!cdata]
            From
                #MyTempTable
            Union
            Select
                2 …
Run Code Online (Sandbox Code Playgroud)

xml cdata sql-server-2008

6
推荐指数
1
解决办法
2926
查看次数

标签 统计

cdata ×1

sql-server-2008 ×1

xml ×1