В этой статье в основном представлены меры предосторожности при использовании MSXML2.DOMDocument для обработки XML-данных в asp. В этой статье описаны 4 проблемы, на которые необходимо обратить внимание. Друзья, нуждающиеся в помощи, могут обратиться к следующим.
Когда asp использует MSXML2.DOMDocument для загрузки XML-файлов в сети, вам необходимо обратить внимание на настройки перед вызовом метода загрузки:
Скопируйте код кода следующим образом:oXML.setProperty ServerHTTPRequest, правда
То есть если включен запрос ServerHTTPRequest, системной ошибки не возникнет: -2146697209.
При использовании компонента MSXML2.DOMDocument в asp необходимо обратить внимание на следующие 4 ситуации:
Скопируйте код кода следующим образом:<%
Тусклый oXML, oXMLError, ReturnValue, x
Установите oXML = Server.CreateObject(MSXML2.DOMDocument)
' Устанавливаем, загружает ли DOMDocument XML-файлы асинхронно или синхронно
oXML.async = false'==========A
' Цель установки: True/False, указывающая, следует ли использовать безопасный для сервера компонент ServerXMLHTTP для загрузки XML-документов.
oXML.setProperty ServerHTTPRequest, true'==========B
'Загрузить сетевой XML-файл через HTTP
ReturnValue = oXML.Load(http://localhost/asp/ServerXML.xml)'==========C
'Или загрузите локальный XML-файл сервера
'ReturnValue = oXML.Load(d:/test.xml)'==========D
' Распечатываем возвращаемое значение DOMDocument.load:
Response.write Результат метода загрузки: = & ReturnValue & <br>
%>
Первый случай (загрузка пустого документа):
По умолчанию атрибут async объекта DOMDocument имеет значение TRUE, что означает, что он загружается асинхронно. И компонент ServerXMLHTTP при загрузке не используется. То есть закомментируйте строки A и B в приведенном выше коде.
Скопируйте код кода следующим образом:'oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, true'==========B
На этот раз загрузка пройдет успешно. ReturnValue будет иметь значение TRUE. Но XML-документ, загруженный в DOMDocument, пуст! Другими словами, TRUE, возвращаемое методом загрузки, является прикрытием! Результат выглядит так: В этом случае программистам следует быть осторожными! Хотя XML не сообщает об ошибках, а метод загрузки также указывает на успех, атрибут xml DOM пуст.
Второй случай (причина ошибки: -2146697209):
Если вы явно объявите атрибут async равным FALSE, XML-документ загружается синхронно. И компонент ServerXMLHTTP при загрузке не используется. То есть закомментируйте только строку B в приведенном выше коде.
Скопируйте код кода следующим образом:oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, true'==========B
Тогда вас ждет неудача! ReturnValue будет иметь значение False. Причина ошибки: -2146697209 — Для необходимого ресурса нет данных. Другими словами, синхронно загрузить XML-ресурсы в Интернете не удастся! !
Третий случай (не допускается):
Если ваш атрибут async имеет значение TRUE, XML-документ загружается асинхронно. И используйте компонент ServerXMLHTTP при загрузке. То есть включите строку B в приведенном выше коде. Закомментируйте строку A кода.
Скопируйте код кода следующим образом:'oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, true'==========B
Сообщил об ошибке! Обратите внимание, что использование компонентов SXH для асинхронной загрузки XML-документов не допускается! Описание ошибки: -1072897486 — свойство ServerHTTPRequest не может использоваться при асинхронной загрузке документа и поддерживается только в Windows NT 4.0 и более поздних версиях.
Четвертый случай (правильное использование):
Если вы явно объявите атрибут async равным FALSE, XML-документ загружается синхронно. И используйте компонент ServerXMLHTTP при загрузке. То есть включите строки A и B в приведенном выше коде.
Скопируйте код кода следующим образом:oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, true'==========B
Вот и все! Показано, что использование компонента SXH для загрузки XML-документов позволяет исправить ошибку асинхронной загрузки интернет-ресурсов.
Подвести итог
Метод загрузки | Стоит ли использовать Компонент ServerXMLHTTP | Загрузить результаты |
| Асинхронная загрузка | Не используется | Загрузка пройдет успешно. Но документ XML, загруженный в DOMDocument, пуст. |
| Синхронная загрузка | Не используется | Столкнется с неудачей! Причина ошибки: -2146697209 — Для необходимого ресурса нет данных. |
| Асинхронная загрузка | использовать | не разрешено |
| Синхронная загрузка | использовать | действительно успешный |