Fehlermeldung, wenn ein XML-Dokument Low-Order ASCII-Zeichen enthält

In diesem Artikel können Sie das Problem beheben, das auftritt, wenn ein XML-Dokument Low-Order ASCII-Zeichen enthält.

Ursprüngliche Produktversion: Microsoft XML
Ursprüngliche KB-Nummer: 315580

Problembeschreibung

Wenn Sie versuchen, die Version 3.0 oder höher des MSXML-Parsers zum Analysieren von XML-Dokumenten zu verwenden, die bestimmte nicht druckbare ASCII-Zeichen (d. h. Zeichen unterhalb von ASCII 32) enthalten, wird möglicherweise die folgende Fehlermeldung angezeigt:

Im Textinhalt wurde ein ungültiges Zeichen gefunden.

Ursache

Version 3.0 und höher des MSXML-Parsers erzwingen streng die gültigen XML-Zeichenbereiche, die durch die XML-Sprachspezifikation des World Wide Web Consortium (W3C) definiert sind. XML-Dokumente, die mit MSXML-Versionen 3.0 oder höher analysiert werden, dürfen keine Zeichen enthalten, die außerhalb der definierten gültigen XML-Zeichenbereiche liegen. Die nicht druckbaren ASCII-Zeichen in niedriger Reihenfolge in den Bereichen, die im Abschnitt Weitere Informationen aufgeführt sind, sind keine gültigen XML-Zeichen. Ein XML-Dokument, das Instanzen dieser Zeichen enthält, entspricht nicht den W3C-Spezifikationen und kann nicht erfolgreich mit MSXML-Versionen 3.0 und höher analysiert werden.

Lösung

Um dieses Problem zu beheben, entfernen Sie entweder Instanzen der nicht druckbaren ASCII-Zeichen in niedriger Reihenfolge, oder ersetzen Sie die Zeichen durch ein alternatives gültiges Zeichen, z. B. das Leerzeichen (ASCII 32, hexadezim #x20). Diese Lösung macht das XML-Dokument mit den W3C-Spezifikationen kompatibel. Das Entfernen oder Ersetzen von Instanzen dieser Zeichen kann sich jedoch auf andere Anwendungen auswirken, die die Daten verwenden und für die die Zeichen von Bedeutung sind. Solche zusätzlichen Auswirkungen können nur durch Tests identifiziert werden und müssen durch die Implementierung einer Korrektur oder Problemumgehung behoben werden, die für eine bestimmte Situation geeignet ist.

Weitere Informationen

In Version 2.6 und früheren Versionen des MSXML-Parsers dürfen XML-Dokumente nicht druckbare ASCII-Zeichen in niedriger Reihenfolge enthalten, die außerhalb der gültigen W3C-XML-Zeichenbereiche liegen. Der Entwurf von Version 3.0 und höher des MSXML-Parsers wurde jedoch geändert, um die gültigen XML-Zeichenbereiche, die in der W3C-XML-Sprachspezifikation definiert sind, streng zu erzwingen. Diese Entwurfsänderung ist erforderlich, um nicht konforme XML-Dokumente identifizieren zu können.

Im Folgenden sind die gültigen XML-Zeichen und Zeichenbereiche (hexadezimierte Werte) aufgeführt, die in den W3C XML-Sprachspezifikationen 1.0 definiert sind:

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

Im Folgenden sind die Zeichenbereiche für nicht druckbare ASCII-Zeichen niedriger Reihenfolge aufgeführt, die von MSXML-Versionen 3.0 und höher abgelehnt werden:

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

Diese Entwurfsänderung kann sich auf die folgenden Benutzer und Anwendungen auswirken:

  • Internet Explorer Benutzer: Benutzer, die Internet Explorer Versionen 5.5 und früher verwendet haben (und MSXML 3.0 nicht im Ersetzungsmodus installiert haben), um XML-Dokumente zu durchsuchen und anzuzeigen, die eine oder mehrere Instanzen der angegebenen nicht druckbaren ASCII-Zeichen mit niedriger Reihenfolge enthalten, erhalten die Fehlermeldung nach einem Upgrade auf Internet Explorer 6.0, da Internet Explorer 6.0 installiert MSXML 3.0 SP2 im Ersetzungsmodus und verwendet es zum Analysieren von XML-Dokumenten.
  • MDAC- und ADO-Benutzer: Entwickler und Benutzer, die ADO-persistente XML-Dokumente laden, die eine oder mehrere Instanzen der angegebenen nicht druckbaren ASCII-Zeichen in niedriger Reihenfolge in ADO-Objekte Recordset enthalten, erhalten nach dem Upgrade auf MDAC 2.7 die Fehlermeldung, da MDAC 2.7 MSXML 3.0 SP2 installiert, die Version des MSXML-Parsers, den das ADO 2.7-Objekt Recordset verwendet.
  • Anwendungen, die das MSXML-Dokumentobjektmodell (DOM) verwenden: Anwendungen, die versionsunabhängige PROGIDs MSXML-DOM-Objekte instanziieren, die zum Analysieren von XML-Dokumenten verwendet werden, generieren den angegebenen Fehler, wenn MSXML 3.0 oder eines seiner Service Packs im Ersetzungsmodus installiert ist oder wenn der Code so geändert wird, dass die MSXML 3.0- oder 4.0-Version PROGIDsverwendet wird.

References

Weitere Informationen zu anderen bekannten Ursachen und Problemumgehungen für die im Abschnitt Symptome angegebene Fehlermeldung finden Sie unter: