C# 如何在XML文件中格式化SQL,使C不认为查询是XML的一部分?

C# 如何在XML文件中格式化SQL,使C不认为查询是XML的一部分?,c#,sql,xml,C#,Sql,Xml,我有几个查询存储在一个XML文件中。给我提供问题的条目是: <Xiphos> SELECT 'AccountGrants', cast (STUFF (SUBSTRING(b.PiiData,0,PATINDEX ('%</AccountNumber>%',b.PiiData ) ),1,24,'') as char(40) ) as Gen2accountNumber ,[GrantTypeId] as

我有几个查询存储在一个XML文件中。给我提供问题的条目是:

<Xiphos>
        SELECT 
      'AccountGrants', 
          cast (STUFF (SUBSTRING(b.PiiData,0,PATINDEX ('%</AccountNumber>%',b.PiiData ) ),1,24,'') as char(40) ) as Gen2accountNumber  
      ,[GrantTypeId] as GrantType-- constant always 1
      ,[GrantAmount]  as GrantedAmount
      ,[UsedAmount]
      ,[AwardedDate]
      ,[ExpirationDate]
      FROM [Xiphos].[dbo].[AccountGrants]a
      join Xiphos.dbo.Accounts b
      on a.AccountId = b.AccountId
      where b.FinancialInstitutionId =@InstitutionId
      order by Gen2accountNumber,AwardedDate;
</Xiphos>
查询的第三行导致我的项目无法编译,因为它认为这是一个格式错误的XML语句或缺少期初AccountNumber

我似乎不知道如何重新格式化查询或修改XML以避免这种情况发生

导致问题的PiiData列如下所示:

<PiiData><AccountNumber>150</AccountNumber>
您需要使用来转义查询中的符号。这将使它们被解释为文本,而不是XML结构本身的一部分

使用少于。

问题在于查询中的字符-它们被视为普通XML,您需要转义它们-有几种方法可以做到这一点

您可以将查询包含在一个部分中:

或者,使用它们的实体引用对它们进行转义-for.

XMLCDATA节


以上两个答案一起使用就可以了。

这是格式错误的XML。XML有5个保留字符,它们对XML解析器具有语法意义。如果这些字符不是XML语法的一部分,则必须对其进行转义。以下是5个保留字符:

使用命名实体&;gt;。 &使用命名实体&;amp;。 使用命名实体&;引用;。 '使用命名实体&;apos;。 您可以使用为每个字符列出的命名实体对其进行转义,也可以将包含保留字符的数据包含在CDATA节中:

<element>
  <![CDATA[
    This is character data only
  ]]>
</element>

您是如何创建该XML文件的?
<element>
  <![CDATA[
    This is character data only
  ]]>
</element>