HTML и DOM в Visual Basic

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dr.Daemn
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 13.04.2003 (Вс) 13:27

HTML и DOM в Visual Basic

Сообщение Dr.Daemn » 13.04.2003 (Вс) 13:51

Может кто-нибудь подскажет, как правильно работать с HTML DOM (Document Object Model) в Visual Basic. Вообщем суть такая: надо положить на форму каккю-нить контроль (WebBrowser, Scriptlet, ...что угодно) и работать с ее содержимым - получать из нее HTML и писать в нее HTML, а также иметь доступ к DOM - т.е. это методы типа document.body.innerHTML, document.write и прочее... Трабла в следующем - у меня ничего не выходит, он не может сделать ничего подобного "Set WebBrowser1.Document = New HTMLDocument" или "Dim objDocument as New HTMLDocument: Set objDocument.body = objDocument.createElement("body")", метод Write использует типы, несуществующие в VB или просто заблокирован (такое сообщение), свойство innerHTML не пашет - "все попытки ***.innerHTML = St" говорят "Method innerHTML failed". Аналогично с методом insertAdjacentHTML. Работа с файлами (писать какой-нить там temp.html, делать Navigate/Navigate2("file://MyTempFilePath/temp.html") и таким образом выкручиваться - очень плохой выход и вообще это неправильно и неудобно. Также проблема в том что в "пустом" WebBrowser'е свойство Document по умолчанию Nothing - а как уже сказал Set не работает. Кто-нить подскажите как можно создать в памяти HTML документ, засунуть его в визуальную контроль на форме и потом, скажем, перечислить все элементы "<img>" (рисунки) в ней. Копался в MSDN но ничего подходящего не нашел - как-то у них поиск странно пашет, а мож у меня руки кривоваты... А может такого вообще сделать нельзя, а я ищу зря? Заранее спасибо, буду благодарен за любую помощь! Также можно слать если что ответы или примеры кода (VB/Delphi/CBuilder) на мыло, daeman{@}mail{точка}ru.

ЗЖ. Возможен вариант с любой сторонней ActiveX (или, хоть оффтопик тогда будет, но VCL/CLX, т.к. по идее могу переползти и на Delphi) компонентой, но нужна *вся* функциональность IE по отображению HTML'я.

Edward
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 14.08.2002 (Ср) 11:54
Откуда: Москва

Сообщение Edward » 14.04.2003 (Пн) 14:25

Я тоже долго мучался , пока не прочел книги по Dynamic HTML.
в DOM мы имеем древовидную структуру полученного документа, от этого отталкивайся. Так просто очень долго объяснять.
присваивание документа делай, когда Документ загружен и когда урл не пустой.
Dim Doc as IHTMLDocument2
Set Doc = Webbrowser.document

Потом анализируй полученный документ , к любому элементу можно получить доступ.
Удачи.

Dr.Daemn
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 13.04.2003 (Вс) 13:27

Немного уточню вопрос...

Сообщение Dr.Daemn » 14.04.2003 (Пн) 20:15

Edward писал(а):...присваивание документа делай, когда Документ загружен и когда урл не пустой.
Dim Doc as IHTMLDocument2
Set Doc = Webbrowser.document
...

Спасибо за ответ! Структуру DOM я знаю отлично, объяснять не нужно... просто скриптовые возможности IE меня уже не устраивают, поэтому надо переходить на язык более высокого уровня. Но функциональность IE и работа с HTML необходима. Вот вопрос по сути такой - а можно сформировать документ (HTMLDocument, IHTMLDocument2, ...) чисто в памяти и его потом всунуть в WebBrowser или Scriptlet или еще что-нить от IE? И как?
Вот такое:
Код: Выделить всё
Dim objDocument as New HTMLDocument
Set WebBrowser1.Document = objDocument

- не работает! Ошибка на второй строке (set), говорит. Вопрос в том что полученное содержимое может быть небезопасным (содержать "запрещенные" теги <script>, <object>, <bgsound> и т.д.), поэтому я получаю его через API WinInet, а потом надо (не пользуя файлы) всунуть уже обработанный (очищенный) HTML в контроль. А потом еще и дополнить или изменить его надо будет! Т.е. нужен DOM, который IE и предоставляет - как для дополнения/изменения, так и для обработки поврежденного HTML'я - автозакрытия тегов, если есть незакрытые. Вот в чем суть проблемы.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 86

    TopList