Domanda

Ho un app che genera un po 'di XML in base al largo di alcuni dati da una fonte che non mi controllo. Fondamentalmente io sto trasformando i dati in un documento XML per servire tramite i feed RSS. I può essere ottenere i dati come

2_br=1
3_br=0

e sto trasformandolo nel seguente codice XML

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

Ovviamente un tag XML non può iniziare con una cifra. Non riuscivo a trovare da nessuna parte un elenco di caratteri validi. Fa esiste da qualche parte? Sono fondamentalmente solo andando a prefisso e il carattere di partenza non valida o sostituire un carattere non valido in linea con un _.

Non è difficile da fare, ma in fondo ho appena cant trovare un elenco di caratteri non validi per un nome tag XML.

È stato utile?

Soluzione

Che ne dite di questo: Extensible Markup Language (XML) 1.0 (quinta edizione)

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]

Altri suggerimenti

XmlConvert.IsNCNameChar() 

e

XmlConvert.IsStartNCNameChar()

può essere utilizzato per convalidare un nome XML-tag:

char[] validTagNameChars = pDesiredTagName.Where(ch => XmlConvert.IsNCNameChar(ch)).ToArray();
string validTagName = new string (validTagNameChars);
if (validTagName == "" || !XmlConvert.IsStartNCNameChar(validTagName[0]))
  validTagName = "_" + validTagName;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top