Sql server 替换XML属性中非法字符的最简单方法
我在手工编写XML时遇到问题。XML由concat字符串生成,如下所示: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
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) + "\" ";