Sql server 替换XML属性中非法字符的最简单方法

Sql server 替换XML属性中非法字符的最简单方法,sql-server,xml,xml-parsing,Sql Server,Xml,Xml Parsing,我在手工编写XML时遇到问题。XML由concat字符串生成,如下所示: ReturnXML += "<agentchimique "; ReturnXML += "id_prod=\"" + Produit.Id + "\" "; ReturnXML += "nom_com_prod=\"" + Produit.NomComProd + "\" "; ReturnXML += "nom_fou

我在手工编写XML时遇到问题。XML由concat字符串生成,如下所示:

            ReturnXML += "<agentchimique ";
            ReturnXML += "id_prod=\"" + Produit.Id + "\" ";
            ReturnXML += "nom_com_prod=\"" + Produit.NomComProd + "\" ";
            ReturnXML += "nom_four=\"" + Produit.Fournisseur.NomFour  + "\" ";
            ReturnXML += "PhraseR=\"" + Produit.PhrasesR.Replace( "<br/>", "@" ) + "\" ";
            ReturnXML += "PhraseS=\"" + Produit.PhrasesS.Replace( "<br/>", "@" ) + "\" ";
            ReturnXML += "numfds_prod=\"" + Produit.NumfdsProd.ToString() + "\" ";
            ReturnXML += "transverse_prod=\"" + Produit.TransverseProd.ToString() + "\" ";
ReturnXML+=”您可以使用

这会将
替换为


尽管您确实应该使用来正确构建xml。

您必须使用ASCII等价物来转义它们:

  • “”必须变成“
    >;
  • “&”必须变成“
    &;
  • 我知道没有捷径


    我不认为您的问题是SQL。XML中的神奇字符使其格式错误。您创建的XML有效吗?

    XML不包含标题,不符合W3C。问题出在SQL sp中,错误消息为:6601:sp\U XML\U PreparedDocument:1:XML解析错误0xc00ce506发生在第1行,靠近XML文本。因此我需要一个XML without data character error。感谢SecurityElement.Escape,但当我在Report services中读取XML时,我需要将其反转?如果是我创建XML,我将使用XDocument,但我经常从lazy Developer检索旧项目:)@User.Anonymous我不确定。也许不是。您必须尝试一下。
    ReturnXML += "nom_four=\"" + SecurityElement.Escape(Produit.Fournisseur.NomFour) + "\" ";