Pregunta

Tengo una aplicación que genera un montón de XML con sede fuera de algunos datos de una fuente que no controlo. Básicamente me estoy convirtiendo esos datos en un documento XML para servir a través de los canales RSS. Puedo conseguir datos como

2_br=1
3_br=0

y estoy convirtiéndolo en el siguiente XML

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

Es evidente que una etiqueta XML no puede comenzar con un dígito. No pude encontrar en cualquier lugar de una lista de caracteres válidos. Hace que existe en algún lugar? Estoy básicamente sólo va a prefijo y el carácter de partida válido o reemplazar un carácter no válido en línea con un _.

No es difícil de hacer, pero básicamente yo sólo puedo encontrar una lista de caracteres no válidos para un nombre de etiqueta XML.

¿Fue útil?

Solución

¿Qué tal esto: Extensible Markup Language (XML) 1.0 (Quinta Edición)

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

Otros consejos

XmlConvert.IsNCNameChar() 

y

XmlConvert.IsStartNCNameChar()

se puede utilizar para validar un nombre XML-etiqueta:

char[] validTagNameChars = pDesiredTagName.Where(ch => XmlConvert.IsNCNameChar(ch)).ToArray();
string validTagName = new string (validTagNameChars);
if (validTagName == "" || !XmlConvert.IsStartNCNameChar(validTagName[0]))
  validTagName = "_" + validTagName;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top