使用Microsoft.mshtml解析HTML

时间:2016-07-27 14:49:18

标签: c# html mshtml

所以我试图使用mshtml解析一些少量的html。但是我遇到了一些问题。我需要从innerHtml获取IHtmlElement。首先,我创建一个IHtmlDocument2对象并抓住我称之为root的主跨标签(包裹所有内容),如下所示。

 string html = someHtml;
 object[] objects = { html };
 mshtml.HTMLDocument doc = new mshtml.HTMLDocument();
 mshtml.IHTMLDocument2 doc2 = (mshtml.IHTMLDocument2)doc;
 doc2.write(objects);
 mshtml.IHTMLElement root = doc.getElementById("root");

然后,我将通过“root”的子项,并使用innerHtml做一些事情。

foreach (mshtml.IHTMLElement e in  (mshtml.IHTMLElementCollection)root.children)
{
    someString = e.innerHtml.substring(0, 1);
    //or something similar  
}

这很好用。但是,当元素innerHtml包含<ol><ul>或任何自我结束标记(例如<br/>)时,我会遇到问题。我遇到的问题是当html标记的innerHtml包含其中之一时,innerHTML对象中的IHtmlElement未设置,并保持为空。有没有解决的办法?我发现很难相信mshtml无法处理这些类型的基本html标签。所以我觉得我做错了什么。非常感谢您的想法,意见和反馈

0 个答案:

没有答案