Требуется объект: 'xmldoc.documentElement'
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Требуется объект: 'xmldoc.documentElement' Expand / Collapse
Автор
Сообщение
28.05.2006 22:46


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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 во всем лучше для хранения данных.
Помогите пожалуйста. Очень прошу.


 

Сообщ. #897672
29.05.2006 11:48
Supreme Being

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 документа.

Сообщ. #897681
29.05.2006 13:02


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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)) Или с кодировкой чето не то? В любом случае опробую твой совет.

Сообщ. #897697
29.05.2006 13:19
Supreme Being

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 правильно генерится.

Сообщ. #897706
30.05.2006 7:15


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.06.2007 10:01
Сообщ.: 244, Visits: 2 268
Приветствую. Всё-же мы были правы. Меитод ускорения мне понравился, но и он не пошел пока я не сменил контент, который формировал нам XML. Кстати я так и не понял почему. Думаю будет интересно.

XML генерировался с прерыванием, то Response.Writ-ом(когда необходимо было возвратить расчетные данные), то обычным кодом <NodName>sdf</NodName>.

Когда я перевел все под Response.Write и установил вверху Content.Type для XML, все пошло. Не уж-то это так важно? Я ведь чуть было сума не сошел.. знал ведь, что все правильно :)

За оптимизацию, спасибо.

Сообщ. #897761
30.05.2006 7:19


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 28.06.2007 10:01
Сообщ.: 244, Visits: 2 268
Да, чуть не забыл. В бразере тот старый XML грузился нормально без ошибок.
Сообщ. #897762
30.05.2006 10:02
Supreme Being

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 помогла.

Сообщ. #897776
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 2:27