Compartir a través de


Mensaje de error cuando un documento XML contiene caracteres ASCII de orden bajo

Este artículo le ayuda a resolver el problema que se produce cuando un documento XML contiene caracteres ASCII de orden bajo.

Versión original del producto: Microsoft XML
Número de KB original: 315580

Síntomas

Al intentar usar las versiones 3.0 o posteriores del analizador MSXML para analizar documentos XML que contienen determinados caracteres ASCII no imprimibles de orden bajo (es decir, caracteres por debajo de ASCII ASCII 32), puede recibir el siguiente mensaje de error:

Se encontró un carácter no válido en el contenido de texto.

Causa

Las versiones 3.0 y posteriores del analizador MSXML aplican estrictamente los intervalos de caracteres XML válidos definidos por la especificación del lenguaje XML World Wide Web Consortium (W3C). Los documentos XML que se analizan con las versiones 3.0 o posteriores de MSXML no pueden contener caracteres que se encuentren fuera de los intervalos de caracteres XML válidos definidos. Los caracteres ASCII no imprimibles de orden bajo de los intervalos que aparecen en la sección Más información no son caracteres XML válidos. Un documento XML que contiene instancias de estos caracteres no es compatible con las especificaciones W3C y no se puede analizar correctamente con las versiones 3.0 y posteriores de MSXML.

Solución

Para resolver este problema, quite instancias de los caracteres ASCII no imprimibles de orden bajo o reemplace los caracteres por un carácter válido alternativo, como el carácter de espacio (ASCII 32, hexadecimal #x20). Esta solución hace que el documento XML sea compatible con las especificaciones W3C. Sin embargo, quitar o reemplazar instancias de estos caracteres puede afectar a otras aplicaciones que usan los datos y a los que los caracteres son significativos. Este impacto adicional solo se puede identificar mediante pruebas y deberá abordarse mediante la implementación de una corrección o solución alternativa adecuada para una situación específica.

Más información

Las versiones 2.6 y anteriores del analizador MSXML permiten que los documentos XML contengan caracteres ASCII no imprimibles de orden bajo que se encuentran fuera de los intervalos de caracteres XML válidos de W3C. Sin embargo, el diseño de las versiones 3.0 y posteriores del analizador MSXML se ha cambiado para aplicar estrictamente los intervalos de caracteres XML válidos definidos en la especificación del lenguaje XML W3C. Este cambio de diseño es necesario para poder identificar documentos XML no conformes.

A continuación se muestran los caracteres XML válidos y los intervalos de caracteres (valores hexadecimales) definidos por las especificaciones del lenguaje XML W3C 1.0:

#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

A continuación se muestran los intervalos de caracteres para caracteres ASCII no imprimibles de orden bajo que se rechazan en las versiones 3.0 y posteriores de MSXML:

#x0 - #x8 (ASCII 0 - 8)
#xB - #xC (ASCII 11 - 12)
#xE - #x1F (ASCII 14 - 31)

Este cambio de diseño puede afectar a los siguientes usuarios y aplicaciones:

  • Usuarios de Internet Explorer: los usuarios que han usado internet Explorer versiones 5.5 y anteriores (y que no instalaron MSXML 3.0 en modo de reemplazo) para examinar y ver documentos XML que contienen una o varias instancias de los caracteres ASCII no imprimibles especificados encuentran el mensaje de error después de actualizar a Internet Explorer 6.0 porque Internet Explorer 6.0 instala MSXML 3.0 SP2 en modo Reemplazo y lo usa para analizar documentos XML.
  • Usuarios de MDAC y ADO: los desarrolladores y usuarios que cargan documentos XML persistidos por ADO que contienen una o varias instancias de los caracteres ASCII de bajo orden no imprimibles especificados en objetos ADO Recordset reciben el mensaje de error después de actualizar a MDAC 2.7 porque MDAC 2.7 instala MSXML 3.0 SP2, que es la versión del analizador MSXML que usa el objeto ADO 2.7 Recordset.
  • Aplicaciones que usan el modelo de objetos de documento (DOM) de MSXML: las aplicaciones que usan la versión independiente PROGIDs para crear instancias de objetos DOM de MSXML que se usan para analizar documentos XML generan el error especificado cuando MSXML 3.0 o uno de sus Service Packs se instalan en modo Replace o cuando se modifica el código para usar la versión específica PROGIDsde MSXML 3.0 o 4.0.

Referencias

Para obtener más información sobre otras causas conocidas y soluciones alternativas para el mensaje de error especificado en la sección Síntomas, vea: