2016-01-15 2 views
2

Со следующим SQL:Предотвращение самозакрывающиеся теги в XML продукции по SQL Sever

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> 
+0

Попробуйте ** Без корневого узла ** 'SELECT '' AS [Content1], '' AS [Content2] FOR XML PATH ('') ' –

ответ

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
SELECT '' as content1 , '' as content2 FOR XML PATH('Rows') 

и

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

Как это сделать, когда вы пытаетесь присвоить результат переменной @xml? ** [Демо] (https://data.stackexchange.com/stackoverflow/query/424102) ** – lad2025

Смежные вопросы