Messaggio di errore quando un documento XML contiene Low-Order caratteri ASCII

Questo articolo consente di risolvere il problema che si verifica quando un documento XML contiene Low-Order caratteri ASCII.

Versione originale del prodotto: Microsoft XML
Numero KB originale: 315580

Sintomi

Quando si tenta di usare le versioni 3.0 o successive del parser MSXML per analizzare i documenti XML contenenti alcuni caratteri ASCII non stampabili di ordine basso,ovvero caratteri inferiori a ASCII 32, è possibile che venga visualizzato il messaggio di errore seguente:

È stato trovato un carattere non valido nel contenuto di testo.

Causa

Le versioni 3.0 e successive del parser MSXML applicano rigorosamente gli intervalli di caratteri XML validi definiti dalla specifica del linguaggio XML W3C (World Wide Web Consortium). I documenti XML analizzati con le versioni 3.0 o successive di MSXML non possono contenere caratteri che non rientrano negli intervalli di caratteri XML validi definiti. I caratteri ASCII non stampabili di ordine basso negli intervalli elencati nella sezione Altre informazioni non sono caratteri XML validi. Un documento XML che contiene istanze di questi caratteri non è conforme alle specifiche W3C e non può essere analizzato correttamente con le versioni 3.0 e successive di MSXML.

Risoluzione

Per risolvere questo problema, rimuovere istanze dei caratteri ASCII non stampabili di ordine basso oppure sostituire i caratteri con un carattere valido alternativo, ad esempio il carattere spazio (ASCII 32, esadecimale #x20). Questa soluzione rende il documento XML conforme alle specifiche W3C. Tuttavia, la rimozione o la sostituzione di istanze di questi caratteri può influire su altre applicazioni che usano i dati e a cui i caratteri sono significativi. Tale impatto aggiuntivo può essere identificato solo tramite test e dovrà essere risolto implementando una correzione o una soluzione alternativa appropriata per una situazione specifica.

Ulteriori informazioni

Le versioni 2.6 e precedenti del parser MSXML consentono ai documenti XML di contenere caratteri ASCII non stampabili di ordine basso che non rientrano negli intervalli di caratteri XML validi W3C. Tuttavia, la progettazione delle versioni 3.0 e successive del parser MSXML è stata modificata per applicare rigorosamente gli intervalli di caratteri XML validi definiti nella specifica del linguaggio XML W3C. Questa modifica di progettazione è necessaria per poter identificare i documenti XML non conformi.

Di seguito sono riportati i caratteri XML validi e gli intervalli di caratteri (valori esadecimali) definiti dalle specifiche del linguaggio XML W3C 1.0:

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

Di seguito sono riportati gli intervalli di caratteri per caratteri ASCII non stampabili di basso ordine rifiutati da MSXML versione 3.0 e successive:

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

Questa modifica alla progettazione può interessare gli utenti e le applicazioni seguenti:

  • Utenti di Internet Explorer: gli utenti che usano Internet Explorer 5.5 e versioni precedenti (e che non hanno installato MSXML 3.0 in modalità sostituisci) per esplorare e visualizzare documenti XML contenenti una o più istanze dei caratteri ASCII non stampabili di basso ordine specificati riscontrano il messaggio di errore dopo l'aggiornamento a Internet Explorer 6.0 perché Internet Explorer 6.0 installa MSXML 3.0 SP2 in modalità sostituzione e lo usa per analizzare i documenti XML.
  • Utenti MDAC e ADO: gli sviluppatori e gli utenti che caricano documenti XML persistenti ad ADO che contengono una o più istanze dei caratteri ASCII non stampabili di basso ordine specificati in oggetti ADO Recordset riscontrano il messaggio di errore dopo l'aggiornamento a MDAC 2.7 perché MDAC 2.7 installa MSXML 3.0 SP2, che è la versione del parser MSXML usato dall'oggetto ADO 2.7 Recordset .
  • Applicazioni che usano il DOM (Document Object Model) MSXML: le applicazioni che usano la versione indipendente PROGIDs per creare un'istanza degli oggetti DOM MSXML usati per analizzare i documenti XML generano l'errore specificato quando MSXML 3.0 o uno dei relativi Service Pack viene installato in modalità sostituisci o quando il codice viene modificato per utilizzare la versione specifica PROGIDsdi MSXML 3.0 o 4.0.

Riferimenti

Per altre informazioni su altre cause note e soluzioni alternative per il messaggio di errore specificato nella sezione Sintomi, vedere: