Как привести mshtml.IHTMLDivElement к mshtml.HTMLDivElementClass? - PullRequest
1 голос
/ 10 февраля 2012

Как привести mshtml.IHTMLDivElement к mshtml.HTMLDivElementClass ?

IHTMLElementCollection collection = doc.body.all;

foreach (var htmlElem in collection)
{
    if (htmlElem is mshtml.IHTMLDivElement)
    {
         mshtml.IHTMLDivElement div = htmlElem as mshtml.IHTMLDivElement;
         if (div != null)
         {
            //  HTMLDivElementClass divClass = (HTMLDivElementClass)div;  ?????????                      
         }
     }            
}

Мне нужен доступ к HTMLDivElementClass, чтобы иметь возможность получить все его члены.

enter image description here

1 Ответ

1 голос
/ 07 марта 2012

Ваш код почти правильный.Не уверен, что вы хотите.

Пожалуйста, измените ваш код, как показано ниже

 mshtml.IHTMLElementCollection collection = (mshtml.IHTMLElementCollection)objDocument.body.all;

            foreach (var htmlElem in collection)
            {
                if (htmlElem is mshtml.IHTMLDivElement)
                {
                    mshtml.HTMLDivElementClass div = htmlElem as mshtml.HTMLDivElementClass;
                    if (div != null)
                    {
                    //DO YOUR CODE HERE 
                     //div.IHTMLElement_id
                    }
                }
            }

Это работает для меня, и в "div" объект имеет тип "HTMLDivElementClass"

И еще одно предложение, если вы хотите, чтобы все теги DIV только со страницы, затем используйте следующую строку кода.

mshtml.IHTMLElementCollection collection = (mshtml.IHTMLElementCollection)objDocument.getElementsByName("div");

Вместо

 mshtml.IHTMLElementCollection collection = (mshtml.IHTMLElementCollection)objDocument.body.all;

Это снимет ваше состояниепроверить, является ли элемент DIV или нет.

Надеюсь, это поможет вам.

...