Mensaje de error cuando un documento XML contiene Low-Order caracteres ASCII

Este artículo le ayuda a resolver el problema que se produce cuando un documento XML contiene Low-Order caracteres ASCII.

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 ciertos caracteres ASCII no imprimibles de bajo orden (es decir, caracteres inferiores a 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 de World Wide Web Consortium (W3C). Los documentos XML que se analizan mediante 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 en 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 conforme con las especificaciones de W3C y no se puede analizar correctamente con las versiones 3.0 y posteriores de MSXML.

Resolución

Para resolver este problema, quite las 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 de W3C. Sin embargo, la eliminación o sustitución de instancias de estos caracteres puede afectar a otras aplicaciones que usan los datos y a las 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 bajo orden que se encuentren 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 bajo orden 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 estado usando las versiones 5.5 y anteriores de Internet Explorer (y que no instalaron MSXML 3.0 en el modo Reemplazar) para examinar y ver documentos XML que contienen una o varias instancias de los caracteres ASCII no imprimibles de bajo orden 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 el modo Reemplazar y lo usa para analizar documentos XML.
  • Usuarios de MDAC y ADO: los desarrolladores y usuarios que cargan documentos XML persistentes en ADO que contienen una o varias instancias de los caracteres ASCII no imprimibles de orden bajo especificados en objetos ADO Recordset encuentran 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 una 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 Pack está instalado en el modo Reemplazar 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: