防止SQL Sever在XML中生成自关闭标记

时间:2016-01-15 15:24:59

标签: sql-server xml tsql

使用以下SQL:

DECLARE @xml XML=
(
    SELECT 
      N'' AS [content1/\*]
    , N'' AS [content2/\*]
    FOR XML PATH('Rows')
)

SELECT @xml 

我得到了自闭标签,如:

<Rows>
  <content1 />
  <content2 />
</Rows>

是否可以改为使用HTML?

<Rows>
  <content1></content1>
  <content2></content2>
</Rows>

此外,是否可能,即没有根节点?

<content1></content1>
<content2></content2>

2 个答案:

答案 0 :(得分:5)

您可以使用TYPE directive来避免隐式转换为字符串并返回XML:

DECLARE @xml XML= 
  (SELECT N'' as [content1],
          N'' as [content2] 
   FOR XML PATH('Rows'), TYPE);

SELECT @xml;

LiveDemo

输出:

<Rows><content1></content1><content2></content2></Rows>
  

如果可能的话?

<content1></content1>
<content2></content2> 
     

表示没有根节点。

DECLARE @xml XML= 
  (SELECT N'' as [content1], N'' as [content2] FOR XML PATH(''), TYPE);

SELECT @xml;

LiveDemo2

输出:

<content1></content1><content2></content2>

答案 1 :(得分:1)

SELECT '' as content1 , '' as content2 FOR XML PATH('Rows')

SELECT '' as content1 , '' as content2 FOR XML PATH('')