Неверный вызов процедуры или аргумент: 'xmlDOM.load'

когда я получаю URL-адрес XML из набора записей, я получаю эту ошибку

Неверный вызов процедуры или аргумент: 'xmlDOM.load'

Set xmlDOM = CreateObject("MSXML2.DOMDocument")
xmlDOM.async = False
xmlDOM.setProperty "ServerHTTPRequest", True

sql="select top 1 * from rss where id=12"
rs.open sql,objcon
if not rs.eof then
    response.write rs("url") 'This returns http://npps.ir/rss.aspx?c=25
    xmlDOM.Load(rs("url"))
end if
rs.close

Но нет ошибки, когда я жестко кодирую этот URL-адрес (однако он возвращает false, потому что целевой URL-адрес не является допустимым XML):

xmlDOM.Load("http://npps.ir/rss.aspx?c=25")

Как я прочитал в документации < strong>MSXML2 метод Load вернет true или false в случае успеха или неудачи. Итак, почему я получаю эту ошибку и почему при жестком кодировании URL-адреса ошибки нет?

Обновление:

когда я использовал xmlDOM.Load(cstr(rs("url"))), у меня не было ошибок. Разве значение набора записей не является строкой?


person Ali Sheikhpour    schedule 15.03.2020    source источник
comment
Попробуйте написать xmlDOM.Load(rs("url").value) и посмотрите, работает ли это.   -  person Daniel Nordh    schedule 16.03.2020


Ответы (1)


Итак, почему я получаю эту ошибку и почему при жестком кодировании URL-адреса ошибки нет? ... Разве значение набора записей не является строкой?

В зависимости от поставщика БД rs("url") может возвращать объект Field с дополнительными свойствами, такими как Name, Type, Value, Attributes и т. д. Попытка полагаться на свойства по умолчанию и коллекции по умолчанию может привести к подобным ошибкам. . При работе с поставщиками OLE DB и ADO ODBC лучше всего указать явно. Например, result = xmlDOM.Load(CStr(rs.Fields.Item("url").Value)) извлекает объект Field для элемента URL, получает его свойство Value, затем преобразует значение в Variant подтипа String для вызова xmlDOM.Load() и фиксирует результат для последующей проверки.

Кстати, если вы не заинтересованы в проверке XML, попробуйте добавить xmlDOM.resolveExternals = False и xmlDOM.validateOnParse = False перед вызовом xmlDOM.Load(). Наконец, если в вашей среде используется прокси-сервер, убедитесь, что вы запускаете свой сценарий из допустимого пользовательского контекста для надлежащей аутентификации прокси-сервера. В противном случае просмотрите методы setProxy и setProxyCredentials MSXML2.ServerXMLHTTP вместо этого. Стоит упомянуть.

Надеюсь, эта информация поможет.

person leeharvey1    schedule 16.03.2020
comment
Как и в документации. говорит для метода .Item() - Возвращает ссылку на объект. - person user692942; 16.03.2020