Duplicar posible:
Why are “control” characters illegal in XML?
Saving an escape character 0x1b in an XML file¿Por qué el serializador XML arroja una excepción de carácter no válido cuando el carácter está dentro de CDATA?
Esto arroja una excepción ArgumentException:
var c = '\x1A';
var xml = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement("test", new XCData(c.ToString()))
);
var foo = xml.ToString(); // ArgumentException
¿Por qué es .Net lanzando esta excepción? Estoy envolviendo el personaje ilegal en CDATA, así que habría pensado que los personajes ilegales serían manejados por mí. Este también es el caso para muchos otros personajes (por ejemplo, 0x1B, 0x1C, 0x1E, 0x1E, 0x1F).
¿Cómo se soluciona este problema?
Consulte estas preguntas: [Cómo guardar un carácter de escape 0x1b en un archivo XML] (http://stackoverflow.com/questions/4134438/saving-an-escape-character-0x1b-in-an-xml-file) y [¿Por qué los caracteres de "control" son ilegales en XML?] (Http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml). Workaraund sería utilizar codificación Base64 antes de guardar en un XML. – oleksii
@oleksii Debe convertir esto en una respuesta, porque es la respuesta correcta. – Bevan
@Bevan: No, en realidad la pregunta debe cerrarse como un duplicado. –