J'ai du code XML qui a été créé en utilisant un objet XmlDocument en C#.Caractères spéciaux/échappement XML SQL 2005 de System.Xml.XmlDocument.OuterXml
J'insère ensuite les données xml dans une colonne XML dans SQL 2005 en utilisant la méthode XmlDocument.OuterXml pour obtenir le fichier XML brut.
Le problème que j'ai est que le xml contient des caractères spéciaux. A savoir: 
C'est parce que le XML est construit à partir de l'entrée de l'utilisateur provenant de diverses sources. Lorsque j'effectue l'insertion, j'obtiens un message d'erreur SQL indiquant l'analyse XML: caractère xml illégal.
CREATE TABLE #MyTable (MyColumn XML)
INSERT INTO #MyTable VALUES ('<Element></Element>')
Msg 9420, niveau 16, état 1, ligne 2
parsing XML: ligne 1, 15 caractères, le caractère xml illégal
quelqu'un peut me diriger dans une direction à la façon dont je peux résoudre ceci?
Il me sera extrêmement difficile de changer quoi que ce soit sur l'objet XmlDocument ou sur le fichier xml lui-même, cependant, je peux changer le mécanisme que j'utilise pour obtenir le XML RAW. Je peux également modifier mes paramètres de base de données si nécessaire.
y at-il un moyen de rendre l'o XmlDocument bject applique les mêmes règles de validation? Ces caractères provenaient d'un utilisateur qui les tapait/les collait dans une zone de texte HTML et TextBox.Text était alors assigné à XmlNode.InnerText. Si le XML est invalide, je suis surpris qu'il ne soit pas tombé en panne à ce stade. –
Jetez un oeil à http://msdn.microsoft.com/en-us/library/56xykaw6.aspx –
Je n'ai pas besoin de conserver les données invalides. Il s'agit de toutes les entrées de l'utilisateur à partir de pages Web et donc pas sûr de la façon dont les caractères d'échappement sont arrivés de toute façon. Je voudrais le nettoyer, j'ai juste besoin d'une solution élégante. J'ai trouvé du code qui supprime les caractères invalides en bouclant toute la chaîne. Cela me semble juste faux, je ne devrais pas coder quels caractères sont valides et lesquels ne le sont pas. –