Parser XML: è stato trovato un carattere non valido nel contenuto di testo

Questo articolo consente di risolvere gli errori durante l'analisi del linguaggio XML (Extensible Markup Language) che contiene caratteri speciali usando il parser MICROSOFT XML (MSXML).

Versione originale del prodotto: .NET Framework
Numero KB originale: 238833

Sintomo

Quando si analizza il codice XML contenente caratteri speciali usando il parser MICROSOFT XML (MSXML), il parser può segnalare il messaggio di errore seguente nella riga e nella posizione del primo carattere speciale:

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

Causa

Il documento XML non è contrassegnato con lo schema di codifica dei caratteri corretto.

Risoluzione

  • Specificare lo schema di codifica appropriato nell'istruzione di elaborazione XML.
  • Codificare nuovamente i dati XML come UTF-8 appropriato.

Stato

Si tratta di un comportamento legato alla progettazione del prodotto.

Ulteriori informazioni

Il carattere speciale si riferisce a qualsiasi carattere esterno all'intervallo standard del set di caratteri ASCII (American Standard Code for Information Interchange) di 0x00- 0x7F, ad esempio caratteri latini con accenti, umlauts o altri segni diacritici. Lo schema di codifica predefinito per i documenti XML è UTF-8, che codifica i caratteri ASCII con un valore di 0x80 o superiore in modo diverso rispetto ad altri schemi di codifica standard.

Molto spesso questo problema si verifica se si usano dati che usano lo schema di codifica iso-8859-1 semplice. In questo caso, la soluzione più rapida è in genere la prima elencata prima nella sezione Risoluzione . Ad esempio, usare la dichiarazione XML seguente:

<?xml version="1.0" encoding="iso-8859-1" ?>
<rootelement>
    ...XML data...
</rootelement>

È invece possibile codificare ognuno di questi caratteri usando il riferimento all'entità numerica. Ad esempio, è possibile prendere il carattere speciale á, usare <test> &#225;</test> (versione decimale) o <test>&#x00E1;</test> (versione esadecimale).