C# 如何在XML文件中格式化SQL,使C不认为查询是XML的一部分?
我有几个查询存储在一个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
<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>