Estoy trabajando en un pequeño proyecto que está recibiendo datos XML en forma de cadena desde una aplicación de ejecución larga. Estoy tratando de cargar esta cadena de datos en un XDocument
(System.Xml.Linq.XDocument
), y a partir de allí hacer algo de XML Magic y crear un archivo xlsx para un informe sobre los datos.Excepción XML: carácter (s) inválido (s)
En ocasiones, recibo los datos que tienen caracteres XML no válidos, y cuando intento analizar la cadena en un XDocument
, obtengo este error.
[System.Xml.XmlException] mensaje: '?', Valor hexadecimal 0x1C, es un carácter no válido.
Como no tengo control sobre la aplicación remota, puede esperar CUALQUIER tipo de carácter.
Soy muy consciente de que XML tiene una manera en la que puede poner caracteres como 
o algo así.
Si es posible, ME GUSTARÍA GRAVEMENTE guardar TODOS los datos. Si no, entonces déjalo estar.
He pensado en la edición de la cadena de respuesta mediante programación, luego volver y tratar de re-análisis sintáctico se debe lanzar una excepción, pero he intentado algunos métodos y ninguno de ellos parecen éxito.
Gracias por su opinión.
Código es algo a lo largo de la línea de esta:
TextReader tr;
XDocument doc;
string response; //XML string received from server.
...
tr = new StringReader (response);
try
{
doc = XDocument.Load(tr);
}
catch (XmlException e)
{
//handle here?
}
En realidad, está procesando un XML de una vez, como una cadena. –
@Matthew, sí, ese es el ejemplo en el que él llama a .ReadToEnd(), pero podría simplemente usar .Read(), etc. Supongo que el OP tendrá que hacer lo que usted dijo. –
Ese enlace fue extremadamente útil – Meiscooldude