Question

J'ai une application qui génère un tas de xml basé sur de certaines données d'une source que je ne contrôle pas. En fait, je me tourne ces données dans un doc xml pour servir via des flux rss. Je peux être obtenir des données comme

2_br=1
3_br=0

et je me tourne dans le code XML suivant

<2_br>1</2_br>
<3_br>0</3_br>

Il est évident qu'une balise xml ne peut pas commencer par un chiffre. Je ne pouvais trouver nulle part une liste de caractères valides. Est-ce qu'il existe quelque part? Je suis fondamentalement juste aller au préfixe et le caractère de départ non valide ou remplacer un caractère non valide en ligne avec un _.

Il est pas difficile à faire, mais au fond, je ne peux pas simplement trouver une liste de caractères non valides pour un nom de balise xml.

Était-ce utile?

La solution

Que diriez-vous ceci: langage de balisage extensible (XML) 1.0 (cinquième édition)

NameStartChar :: = ":" | [A-Z] | "_" | [A-z] | [# XC0- # XD6] | [# XD8- # XF6] | [# XF8- # x2FF] | [# X370- # x37D] | [# X37F- # x1FFF] | [# X200C- # x200D] | [# X2070- # x218F] | [# X2C00- # x2FEF] | [# X3001- # xD7FF] | [# XF900- # xFDCF] | [# XFDF0- # xFFFD] | [# X10000- # xEFFFF]

Autres conseils

XmlConvert.IsNCNameChar() 

et

XmlConvert.IsStartNCNameChar()

peut être utilisé pour valider un nom-balise XML:

char[] validTagNameChars = pDesiredTagName.Where(ch => XmlConvert.IsNCNameChar(ch)).ToArray();
string validTagName = new string (validTagNameChars);
if (validTagName == "" || !XmlConvert.IsStartNCNameChar(validTagName[0]))
  validTagName = "_" + validTagName;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top