Сообщение об ошибке, когда XML-документ содержит символы Low-Order ASCII
Эта статья поможет устранить проблему, которая возникает, когда XML-документ содержит Low-Order символы ASCII.
Исходная версия продукта: Microsoft XML
Оригинальный номер базы знаний: 315580
Симптомы
При попытке использовать средство синтаксического анализа MSXML версии 3.0 или более поздней для синтаксического анализа XML-документов, содержащих некоторые непечатаемые символы ASCII (то есть символы ниже ASCII 32), может появиться следующее сообщение об ошибке:
В текстовом содержимом найден недопустимый символ.
Причина
В версиях 3.0 и более поздних версий средства синтаксического анализа MSXML строго применяются допустимые диапазоны символов XML, определенные спецификацией xml консорциума W3C. XML-документы, которые анализируются с помощью MSXML версии 3.0 или более поздней, не могут содержать символы, которые выходят за пределы определенных допустимых диапазонов символов XML. Непечатаемые символы ASCII низкого порядка в диапазонах, перечисленных в разделе Дополнительные сведения , не являются допустимыми символами XML. XML-документ, содержащий экземпляры этих символов, не соответствует спецификациям W3C и не может быть успешно проанализирован в msXML версии 3.0 и более поздних.
Решение
Чтобы устранить эту проблему, удалите экземпляры символов ASCII низкого порядка, не печатаемых, или замените символы альтернативным допустимым символом, например символом пробела (ASCII 32, шестнадцатеричный #x20). Это решение обеспечивает соответствие XML-документа спецификациям W3C. Однако удаление или замена экземпляров этих символов может повлиять на другие приложения, использующие данные и для которых символы имеют важное значение. Такое дополнительное влияние можно определить только путем тестирования, и его необходимо будет устранить путем реализации исправления или обходного решения, подходящего для конкретной ситуации.
Дополнительная информация
В версиях 2.6 и более ранних версий средства синтаксического анализа MSXML XML-документы могут содержать непечатаемые символы ASCII низкого порядка, которые выходят за допустимые диапазоны символов XML W3C. Однако конструкция средства синтаксического анализа MSXML версий 3.0 и более поздних версий была изменена для строгого применения допустимых диапазонов символов XML, определенных в спецификации языка XML W3C. Это изменение структуры требуется, чтобы иметь возможность идентифицировать несоответствующие XML-документы.
Ниже приведены допустимые XML-символы и диапазоны символов (шестнадцатеричные значения), определенные спецификациями языка XML W3C 1.0:
#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Ниже приведены диапазоны символов для символов ASCII низкого порядка, которые отклоняются MSXML версии 3.0 и более поздних.
#x0 - #x8 (ASCII 0 - 8)
#xB - #xC (ASCII 11 - 12)
#xE - #x1F (ASCII 14 - 31)
Это изменение структуры может повлиять на следующих пользователей и приложения:
- Пользователи Обозреватель Интернета: пользователи, которые использовали Интернет Обозреватель версий 5.5 и более ранних версий (и не устанавливали MSXML 3.0 в режиме замены) для просмотра и просмотра XML-документов, содержащих один или несколько экземпляров указанных непечатаемых символов ASCII низкого порядка, возникает сообщение об ошибке после обновления до Internet Обозреватель 6.0, так как Интернет Обозреватель 6.0 устанавливает MSXML 3.0 с пакетом обновления 2 (SP2) в режиме замены и использует его для анализа XML-документов.
- Пользователи MDAC и ADO. Разработчики и пользователи, которые загружают xml-документы, сохраняемые ADO, которые содержат один или несколько экземпляров указанных непечатаемых символов ASCII в объекты ADO
Recordset
, сталкиваются с сообщением об ошибке после обновления до MDAC 2.7, так как MDAC 2.7 устанавливает MSXML 3.0 с пакетом обновления 2 (SP2), который является версией средства синтаксического анализа MSXML, используемой объектом ADO 2.7Recordset
. - Приложения, использующие модель MSXML Document Object Model (DOM). Приложения, использующие независимые от
PROGIDs
версии объекты DOM MSXML, которые используются для анализа XML-документов, создают указанную ошибку, если MSXML 3.0 или один из его пакетов обновления установлен в режиме замены или когда код изменяется для использования msXML 3.0 или 4.0 версииPROGIDs
.
Ссылки
Дополнительные сведения о других известных причинах и обходных решениях сообщения об ошибке, указанного в разделе Симптомы, см. в следующих статьях: