在SQL Server的ForXMLPath查询中包括文本

时间:2019-06-12 15:33:30

标签: sql-server xml sqlxml for-xml-path

我想在ForXMLPath查询中包含一行(简单文本)

for

但是我遇到了困难。

当我尝试时,它会带来奇怪的字符。

请帮助。

谢谢。

ID

我希望如此

ID

但显示在下方

<Cat>

1 个答案:

答案 0 :(得分:0)

我必须承认,您的问题不清楚...

XML不仅是带有花哨功能的文本,而且是一个非常严格组织的基于文本的数据容器。

一个简单的SELECT '<Cat>'在查询中没有FOR XML的情况下永远不会返回 。因此,请向我们展示您的完整查询和预期输出的一个(减少的!)示例,最好以MCVE形式提供(具有DDL,样本数据,自己尝试和预期输出的独立示例)。 / p>

仅作一般说明:

  • 如果要将<Cat>放在XML内,则整个输出将是损坏的XML。此开始标记要求结束</Cat>(或者-或者是自闭合<Cat />
  • 假设您尝试像在XSLT,JS,ASP.Net或任何其他XML / HTML生成方法中一样,将已写出的标签添加到XML中。
  • 假设您的解决方案将是一种FOR XML PATH()的方法,而无需在XML中使用已覆盖的标签。

只是给您一个想法:

SELECT 'test' AS [SomeElement] FOR XML PATH('SomeRowTag'),ROOT('SomeRootTag');

产生此XML

<SomeRootTag>
  <SomeRowTag>
    <SomeElement>test</SomeElement>
  </SomeRowTag>
</SomeRootTag>

如果要添加<Cat>元素,可以使用此处的XPath

SELECT 'test' AS [Cat/SomeElement] --<-- You can add nest-levels here!
FOR XML PATH('SomeRowTag'),ROOT('SomeRootTag');

结果

<SomeRootTag>
  <SomeRowTag>
    <Cat>
      <SomeElement>test</SomeElement>
    </Cat>
  </SomeRowTag>
</SomeRootTag>