2009-07-24 5 views
2

J'utilise XmlTextWriter pour sérialiser et conserver certaines de mes données. Plusieurs des champs que je sérialise sont basés sur l'entrée de l'utilisateur (par exemple, le nom d'utilisateur). Aujourd'hui, j'utilise la méthode WriteElementString de XmlTextWriter.C#: Désinfecter les valeurs de texte XML avec XmlTextWriter?

Ma question est: le deuxième paramètre de WriteElementString est la valeur de texte à écrire. Comment puis-je l'assainir avant d'écrire?

Un exemple de code:

XmlTextWriter writer = new XmlTextWriter("filename.xml", null); 

writer.WriteStartElement("User"); 
writer.WriteElementString("Username", inputUserName); 
writer.WriteElementString("Email", inputEmail); 
writer.WriteEndElement(); 

writer.Close(); 

Les variables inputUserName et inputEmail sont entrées utilisateur, et je voudrais désinfectez/leur échapper avant l'écriture.

Quelle est la meilleure façon d'y parvenir?

Répondre

3

De quoi avez-vous besoin pour vous échapper? WriteElementString fera tout échappements nécessaires par XML déjà (à savoir & ->&amp;, < ->&lt;, etc.)

+0

Donc WriteElementString est complètement sûr? (Il est logique quand vous le dites, je ne savais pas que c'était le cas) –

+0

Il est "sûr" dans un sens qu'il garantit que la sortie sera XML valide, et que lorsque vous le relirez, vous aurez obtenir la même chaîne. –

-2

Vous pouvez en toute sécurité ces valeurs CDATA qui seront le plus sûr que vous pouvez faire avec xml.

Avant de vérifier les valeurs via RegEx ou toute autre validation.

+0

Pourquoi la downvote? CDATA est le moyen le plus sûr de vous tenir en XML et de contenir tout ce que vous souhaitez? –

+0

CDATA n'a pas d'importance du tout. C'est juste un moyen d'écrire du texte sans avoir besoin d'y échapper. Le code utilisé par l'OP va tout échapper correctement. –

+0

Ecrit comme CDATA, il ne sera pas échappé, mais fonctionnera correctement. –

Questions connexes