T-SQL XML值失去新的行格式
我将XML文件加载到SQL Server中。我查询此文件以提取具有值的节点。
问题是选择时新行字符丢失了。如何保留格式,以便在我在网上显示文字时,如果没有换行符,它就不会显得凌乱。
有关详细信息,请参阅文字和屏幕截图
T-SQL代码:
declare @Text xml ;
set @Text= '<?xml version="1.0" encoding="utf-8"?>
<topic>
<L1>
<Subject>Subject text</Subject>
<Details>
Story Details are
This is paragraph
Text after After two line breaks
Text after After two line breaks
</Details>
</L1>
</topic>'
;with t as (select @Text [xmlcolumn])
--select * from t
SELECT x.a.value('(Subject)[1]','nvarchar(max)') as [Subject]
, x.a.value('(Details)[1]','nvarchar(max)') as [Details]
FROM t
cross apply
t.xmlcolumn.nodes('//L1') x(a)
答案 0 :(得分:1)
更新:我误解了您的问题 - 换行问题纯粹出现在SQL Server Management Studio中 - 它无法代表这些换行符。当您从C#或VB.NET中的应用程序中读取XML时,这些新行仍将存在 - 请相信我。
但是这个原始答案在其他情况下也可能是相关的 - 你需要知道SQL Server不是“按原样”存储你的XML - 它会解析并转换它。因此,当您要求将其恢复时,它可能看起来略有不同,但它在功能上仍然是相同的。
是的,这是正常的预期行为。
SQL Server以标记化格式存储您的XML - 例如它不存储XML的实际文本表示,但它会将XML解析并标记为XML片段,然后存储在此XML
数据类型中。
因此,当您再次查询它时,您将获得语义正确且相同的表示形式 - 但某些文本表示可能会有所不同。
E.g。当你传入一个像这样的空XML元素时:
<MyEmptyElement></MyEmptyElement>
当您再次从SQL Server检索XML时,您将获得“简短”形式:
<MyEmptyElement />
这不是完全相同的文本 - 但从语义角度看它是100%相同的XML。
据我所知,你不能以任何方式影响这种行为 - 你只需要忍受它。