|
|
|
Supreme Being
      
участник
Last Login: 28.06.2007 10:01
Сообщ.: 244,
Visits: 2 268
|
|
ПРоблема в следующем. "Msxml2.DOMDocument" не хочет работать с файлом, созданным "ADODB.Stream" Выдает ошибку: Error Type: Ошибка выполнения Microsoft VBScript (0x800A01A8) Требуется объект: 'xmldoc.documentElement'Причем я 2 дня ломаю голову почему, если я копирую содержимое этого же XML-я и вставляю в другой (созданный вручную) и также изменяю имя, то все нормально! Неужели проблема в методе создания файла? Вот код: Dim objSrvHttp Set objSrvHttp = Server.CreateObject("MSXML2.ServerXMLHTTP") Call objSrvHTTP.open("GET", url, False) objSrvHTTP.send() Dim objStream Set objStream = Server.CreateObject("ADODB.Stream") objStream.Type = 1 objStream.Open objStream.Write(objSrvHTTP.responseBody) Call objStream.SaveToFile(Server.MapPath("doc/" & session_id & ".xml"), 2) objStream.Close() Set objStream = Nothing Set objSrvHTTP = Nothing Суть такова: с помощу ServerXMLHTTP получаем ХМL код. Сохраняем его отдельным файлом, а затем загружаем для получения данных. 2 дня мучусь... вне логики.. в чем тут проблема? Что я делаю не то? Почему ошибку выдает? Я уже сомневаюсь... может лучше в txt сохранять? Но глупо... XML во всем лучше для хранения данных. Помогите пожалуйста. Очень прошу.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Все должно работать. Ты открываешь поток в двоичном режиме и записываешь в него данные из свойства responseBody, представляющего собой набор байтов полученных с сервера. У меня XML сохранился без всяких проблем. Попробуй использовать более короткий путь: objSrvHTTP.send() objSrvHTTP.responseXML.save(Server.MapPath("doc/" & session_id & ".xml")) Учти, что данный способ более ресурсоемкий так как производится разбор полученного XML документа.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 28.06.2007 10:01
Сообщ.: 244,
Visits: 2 268
|
|
| Попробую, спасибо. Кстати, XML-ка создавалась... но при попытке выделить какой-либо элемент из xmldoc.documentElement по имени этого файла, выдает ошибку. Причем, если тот же код написать вручную и создать XML - всё пучком. Может быть проблема в том, что код XML рисуется налету под response.write в url? (когда вызываем Call objSrvHTTP.open("GET", url, False)) Или с кодировкой чето не то? В любом случае опробую твой совет.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
mentos_has_arisen (29.05.2006) Может быть проблема в том, что код XML рисуется налету под response.write в url? (когда вызываем Call objSrvHTTP.open("GET", url, False)) Или с кодировкой чето не то?Это не должно иметь значения. Проверь как открывается твой xml файл в браузере. Если нет проблем, то значит xml правильно генерится.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 28.06.2007 10:01
Сообщ.: 244,
Visits: 2 268
|
|
| Приветствую. Всё-же мы были правы. Меитод ускорения мне понравился, но и он не пошел пока я не сменил контент, который формировал нам XML. Кстати я так и не понял почему. Думаю будет интересно. XML генерировался с прерыванием, то Response.Writ-ом(когда необходимо было возвратить расчетные данные), то обычным кодом <NodName>sdf</NodName>. Когда я перевел все под Response.Write и установил вверху Content.Type для XML, все пошло. Не уж-то это так важно? Я ведь чуть было сума не сошел.. знал ведь, что все правильно :) За оптимизацию, спасибо.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 28.06.2007 10:01
Сообщ.: 244,
Visits: 2 268
|
|
| Да, чуть не забыл. В бразере тот старый XML грузился нормально без ошибок.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
mentos_has_arisen (30.05.2006)
XML генерировался с прерыванием, то Response.Writ-ом(когда необходимо было возвратить расчетные данные), то обычным кодом <NodName>sdf</NodName>. Когда я перевел все под Response.Write и установил вверху Content.Type для XML, все пошло. Не уж-то это так важно? Я ведь чуть было сума не сошел.. знал ведь, что все правильно :) Трудно судить со стороны, но думаю тебе помогла именно установка Content-Type, а не замена тегов на Response.Write. Принимающая сторона не в состоянии различить код созданный разными способами. Или у тебя в xml коде была где-то опечатка которую ты незаметно для себя исправил при переходе на Response.Write и у тебя сложилось впечатление что именно замена всего на Response.Write помогла.
|
|
|
|