15 49.0138 8.38624 1 0 4000 1 https://www.alexmedina.net 300 true 0

Solución error método Load de XDocument: ‘.’, valor hexadecimal 0x00, es un carácter no válido.

1 Comment

Siempre cargaba los documentos XML del streamReader de esta forma:

XDocument myXmlDocument = XDocument.Load(myReader, LoadOptions.None);

Hasta que hace unos días me salía un error con un documento que decía:

‘.’, valor hexadecimal 0x00, es un carácter no válido. Línea XXX, posición XX. (casualmente siempre me indicaba la última línea)

Bueno… y como podía ser esto posible… si yo veía el XML correcto, muy bien a ciencia cierta no lo se pero encontré una solución que al menos lo que hace es eliminar todos los caracteres hexadecimales de la cadena de carga de XML.

 

Utilizando esta función en mi caso:

public static string CleanInvalidXmlChars(string text)        {           
// From xml spec valid chars:             
// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]                 
// any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.             
string re = @"[^x09x0Ax0Dx20-xD7FFxE000-xFFFDx10000-x10FFFF]";            
return Regex.Replace(text, re, "");        
}

Y cambiando el Load por el Parse:

XDocument myXmlDocument = XDocument.Parse( CleanInvalidXmlChars(myReader.ReadToEnd()), LoadOptions.None);
Previous Post
Utilizar Parallels Extensions de System.Threading en Framework .NET 3.5
Next Post
El método focus() de jQuery no funciona en Google Chrome… Solución¡¡

1 Comment

  • 2 julio, 2013 at 7:08 pm
    squiel

    thanks!

    Reply

Leave a Reply

SOBRE MÍ

Afortunado de trabajar en lo que me gusta, aprendiendo cada día cosas nuevas y ayudando a crear proyectos.
Conocimientos en diversas tecnologías y experiencia demostrable.
¿Nos ponemos manos a la obra?

Mis Apuntes