Получить HTML Head от IE DOM
Я знаю, как получить HTML-текст документа, используя интерфейс IHTMLDocument2 (вызывая функцию-член get_body.
Но как я могу получить голову? В интерфейсе IHTMLDocument2 такой функции нет?
1 ответ
Решение
CComPtr<IHTMLDocument2> htmlDocument;
CComPtr<IHTMLElementCollection> elementCollection;
htmlDocument->get_all(&elementCollection);
for (long i=0;i<numberOfElements;i++)
{
_variant_t index = i;
CComPtr<IHTMLElement> htmlElem;
CComPtr<IDispatch> htmlElemDisp;
hResult = elementCollection->item( index,index ,(IDispatch **) &htmlElemDisp );
if (FAILED(hResult) || (!(htmlElemDisp)))
{
continue;
}
hResult = htmlElemDisp->QueryInterface( IID_IHTMLElement ,(void **) &htmlElem);
if (FAILED(hResult) || (!(htmlElem)))
{
continue;
}
hResult = htmlElem->get_tagName(&buffer);
if (FAILED(hResult) || (!(buffer)))
{
continue;
}
if (_wcsicmp(buffer,L"HEAD")==0)
{
// your code here
}
}
Также вы можете использовать IHTMLDocument2* htmlDocument
вместо CComPtr<IHTMLDocument2> htmlDocument
, Основная идея состоит в том, чтобы получить все элементы в вашем документе, итерировать их и найти тот, у которого есть tagName HEAD. Надеюсь это поможет.