所以我试图使用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标签。所以我觉得我做错了什么。非常感谢您的想法,意见和反馈