Последние записи
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
20th
Июн
IHTMLElement. Получить список атрибутов тега
Posted by maloy under Win Api
Stilet
Всем доброго. использую IHTMLElement для получения данных тега. Хочу получить список атрибутов. В MSDN описан метод getAttribute, но ему нужно задавать имя атрибута для его получения, а мне хочется получить количество атрибутов тега и после в цикле по ним пройтись.
Вопрос: Есть ли у MSHTML возможность пройтись по атрибутам циклом, или getAttribute это предел возможности этого парсера микрософтовского?
Человек_Борща
нормального нет, но есть это, или более старая функция: geElementsByTagName и перебор в цикле.
waleri
|
Аргументов два — первый это VARIANT в котором индекс, второй это указатель на указатель результата.
Здесь пример на С++: http://msdn.microsoft.com/en-us/libr…(v=vs.85).aspx
Stilet
|
Блин, точно. Затупил еще раз. Все получилось, спасибо.
|
Ну на IE 9-ку пока расчитывать не могу.
В любом случае ссылка Валеры вывела в нужное русло после того как понял как правильно получать интерфейсы.
На всякий случай прикрепляю примерчик, может кто еще ищет как это делается в Делфи:
var nn:OleVariant;j,i,cnt,cntattr:integer; p:Pointer; domnode:IHTMLDOMNode;
attrs:IHTMLAttributeCollection;
atr:IHTMLDOMAttribute;
aName,aVal:String;
begin
if Elem=nil then begin
Collection:=IHTMLElementCollection(Document.body.all);
end;
cnt:=Collection.length;
for i:=0 to cnt-1 do begin
if Collection.item(i,0).QueryInterface(IID_IHTMLElement,p)=S_OK then begin
Elem:=IHTMLElement(p);
if elem.QueryInterface(IID_IHTMLDOMNode,p)=S_OK then begin
domnode:=IHTMLDOMNode(p);
...:=domnode.nodeName;
...:=Elem.innerHTML;
//****************************** Attributes *********************************************
p:=domnode.attributes;
if p<>nil then begin
if domnode.attributes.QueryInterface(IID_IHTMLAttributeCollection,p)=S_OK then begin
attrs:=IHTMLAttributeCollection(p);
cntattr:=attrs.length;
for j:=0 to cntattr-1 do begin
nn:=j;
if attrs.item(nn).QueryInterface(IID_IHTMLDOMAttribute,p)=S_OK then begin
atr:=IHTMLDOMAttribute(p);
if not VarIsNull(atr.nodeValue) then begin
aName:=atr.nodeName;
aVal:=trim(VarToStrDef(atr.nodeValue,''));
if aVal<>'' then begin
ListBox.Items.Append(aName+'='+aVal);
end;
end;
end;
end;
end;
end;
//***************************************************************************************
end;
end;
end;
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)