Pergunta

Eu tenho um aplicativo que gera um monte de XML com base em alguns dados de uma fonte que eu não controlo. Basicamente, estou transformando esses dados em um documento XML para servir através de feeds RSS. Eu posso estar recebendo dados como

2_br=1
3_br=0

E estou transformando isso no seguinte XML

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

Obviamente, uma tag XML não pode começar com um dígito. Não consegui encontrar em nenhum lugar uma lista de caracteres válidos. Existe em algum lugar? Eu basicamente vou apenas prefixar e inválido de personagem inicial ou substituir um caractere inválido em linha por um _.

Não é difícil de fazer, mas basicamente não consigo encontrar uma lista de caracteres inválidos para um nome de tag XML.

Foi útil?

Solução

Que tal agora:Linguagem de marcação extensível (XML) 1.0 (Quinta Edição)

Namestartchar :: = ":" | [AZ] | "_" | [AZ] | [#xc0-#xd6] | [#xd8-#xf6] | [#xf8-#x2ff] | [#x370-#x37D] | [#x37f-#x1fff] | [#x200C-#x200D] | [#x2070-#x218f] | [#x2C00-#x2FEF] | [#x3001-#xd7ff] | [#xf900-#xfdcf] | [#xfdf0-#xfffd] | [#x10000-#xeffff

Outras dicas

XmlConvert.IsNCNameChar() 

e

XmlConvert.IsStartNCNameChar()

pode ser usado para validar um nome de marca XML:

char[] validTagNameChars = pDesiredTagName.Where(ch => XmlConvert.IsNCNameChar(ch)).ToArray();
string validTagName = new string (validTagNameChars);
if (validTagName == "" || !XmlConvert.IsStartNCNameChar(validTagName[0]))
  validTagName = "_" + validTagName;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top