Caracteres ilegais em XML

Tenho uma aplicação.Net escrita em C# que grava informações no formato XML. A aplicação serializa os dados da aplicação em xml. A aplicação contém uma caixa de texto onde o usuário está livre para digitar qualquer texto. Tenho casos em que os utilizadores conseguiram introduzir caracteres, principalmente quando copiam e colam texto de outras aplicações para a caixa de texto, onde o documento xml fica corrompido. Existe uma abordagem geral para gerir caracteres ilegais em documentos xml sem ter de filtra-os em todas as caixas de texto ao entrar.

Amostra de um documento corrompido
<Propery>
  <Name>&#x8;Alimentação Controlador</Name>
  <Value>24</Value>
  <Unit>Vca</Unit>
</Propery>

o documento é serializado com ASCIIEncoding.UTF8

 2
Author: The_Black_Smurf, 2012-09-05

4 answers

Acho que a tua melhor aposta é "SafeEncode" a cadeia introduzida pelo utilizador. esta ligação http://msdn.microsoft.com/en-us/library/system.security.securityelement.escape (VS.80).aspx mostra-lhe como fazê-lo facilmente com uma chamada para a segurança.Método de Escape (texto s).

 3
Author: JTMon, 2012-09-05 09:02:30

Pode usar mesmo estes caracteres "incriminados", se quiser, usando CDATA

Olha aqui.

 1
Author: dllhell, 2012-09-05 09:07:11

Deve utilizar as melhores práticas sugeridas pela JTMon.

Também encontrei a mesma situação ao exportar para XML. Eu não sei se funcionaria para você ou não, mas tente usar stringbuilder em vez de string para gerar xml.

Podes tentar isto também

i.SubItems[0].Text.Trim('\0')
Espero que ajude.
 -1
Author: Hardik, 2012-09-05 09:12:58

Deve substituir os seguintes caracteres ilegais por:

&lt; (

&amp; (&)

&gt; (>)

&quot; (")

&apos; (')

 -1
Author: Koen Goovaerts, 2015-07-10 13:46:21