PRB: Mensaje de Error cuando un documento XML contiene caracteres ASCII de orden inferior

Síntomas

Cuando intenta utilizar versiones 3.0 o posteriores del analizador MSXML para analizar documentos XML que contienen ciertos caracteres de ASCII no imprimibles de orden inferior (es decir, los caracteres por debajo de ASCII 32), 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 cumplir 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 caen fuera de los intervalos de caracteres XML válidos definidos. Los caracteres ASCII no imprimibles de orden inferior en los intervalos que se enumeran en la sección "Más información" no son caracteres XML válidos. Un documento XML que contiene las instancias de estos caracteres no es compatible con las especificaciones de W3C y no pueda analizarse correctamente con las versiones 3.0 y posteriores de MSXML.

Solución

Para resolver este problema, quite las instancias de los caracteres ASCII no imprimibles de orden inferior, o bien reemplazar los caracteres con un carácter alternativo válido, como el carácter de espacio (ASCII 32, hex #x 20). Esta solución hace que el documento XML compatible con las especificaciones de 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. Tales consecuencias adicionales sólo pueden identificarse mediante pruebas y deberán solucionarse mediante la implementación de una revisión o una solución apropiada para una situación específica.

Estado

Este comportamiento es por diseño.

Más información

Las versiones 2.6 y anteriores del analizador MSXML permiten a los documentos XML contener caracteres ASCII no imprimibles de bajo orden que quedan fuera de los intervalos de caracteres XML válidos de W3C. Sin embargo, se cambió el diseño de las versiones 3.0 y posteriores del analizador MSXML para cumplir estrictamente los intervalos de caracteres XML válidos que se definen en la especificación del lenguaje XML de W3C. Este cambio de diseño debe ser capaz de identificar los documentos XML no conforme.


Los siguientes son los caracteres XML válidos y los intervalos de caracteres (valores hexadecimales) tal como se define en las especificaciones de lenguaje de W3C XML 1.0:
#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Los siguientes son los intervalos de caracteres para los caracteres ASCII no imprimibles bajo pedido son rechazados por versiones MSXML 3.0 y versiones posteriores:
#x0 - #x8 (ASCII 0 - 8)#xB - #xC (ASCII 11 - 12)
#xE - #x1F (ASCII 14 - 31)

Este cambio de diseño puede afectar a los usuarios y las aplicaciones siguientes:
  • Los usuarios de Internet Explorer: Los usuarios que han estado usando las versiones 5.5 y anteriores de Internet Explorer (y no instalaron MSXML 3.0 en modo de reemplazo) para examinar y ver que documentos XML que contienen una o más instancias de los caracteres de ASCII no imprimibles de orden inferior especificados produce el mensaje de error después de actualizar a Internet Explorer 6.0 porque Internet Explorer 6.0 Service Pack 2 de MSXML 3.0 se instala en modo de reemplazo y se utiliza para analizar documentos XML.
  • Usuarios MDAC y ADO: Los desarrolladores y usuarios que cargar documentos XML persistente en ADO que contienen una o más instancias de los caracteres de ASCII no imprimibles de orden inferior especificados en los objetos produce el mensaje de error después de actualizar a MDAC 2.7, porque MDAC 2.7 se instala MSXML 3.0 Service Pack 2, que es la versión del analizador MSXML que utiliza el objeto Recordset de ADO 2.7 de Recordset de ADO.
  • Las aplicaciones que utilizan MSXML Document Object Model (DOM): Las aplicaciones que utilizan la versión ProgID independiente para crear instancias de objetos DOM de MSXML que se utilizan para analizar documentos XML generan el error especificado cuando MSXML 3.0 o uno de sus service Pack está instalado en modo de reemplazo o cuando el código se modifica para usar la versión 3.0 de MSXML o versión 4.0 ProgID específicos.

Referencias

Para obtener información adicional sobre otras causas conocidas y soluciones para el mensaje de error que se especifica en la sección 'Síntomas', haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
238833 PRB: analizador XML: se encontró un carácter no válido en el contenido de texto
275883 INFO: métodos de interfaz de codificación XML y DOM
Propiedades

Id. de artículo: 315580 - Última revisión: 9 ene. 2017 - Revisión: 1

Comentarios