我实际上正在使用 WPF 和 WPF WebBrowser 用 C# 开发一个个人项目。我真的需要探索 html DOM 元素,就像我们过去在 javascript 或 php 中所做的那样。
在我的主窗口中我有这个变量:
private mshtml.HTMLDocument mainDocument = new mshtml.HTMLDocument();
在我的网络浏览器加载完成回调中,我有以下内容:
mainDocument = (mshtml.HTMLDocument) mainBrowser.Document;
好的,这很好,它正在工作。
现在如果我这样做:
mshtml.IHTMLElement elem = mainDocument.getElementById("MY_ID");
它也非常好,可以做 elem.innerHTML 或类似的东西。
但我的问题是只有 HTML 文档有方法通过 ID、标签名称等查找元素
我不知道如何在 IHTMLElement 中查找元素。我尝试了一些方法,例如将 IHTMLElement 转换为 IHTMLElement2.. 等,但没有任何效果。
如果您有任何想法,请。很多人谈论托管 winforms webbrowser,但我认为它必须有一种方法只能使用 mshtml 来做到这一点。
多谢,
如果您需要更多信息,请随时询问我
PS:我是法国人,所以我对我的英语水平感到抱歉
如果你想在Winforms或wpf中解析HTML文档,你可以使用一个优秀的解析器htmlagility包。参考下面的链接http://html-agility-pack.net http://html-agility-pack.net
var url = "http://html-agility-pack.net/";
var web = new HtmlWeb();
var doc = web.Load(url);
加载到doc中后,可以获取任意属性、标签等。
var value = doc.DocumentNode
.SelectNodes("//td/input")
.First()
.Attributes["value"].Value;
这非常简单,只需稍微浏览一下文档,您就可以充分利用它。
您甚至可以从网络浏览器加载 html 敏捷包,如下所示
HtmlAgilityPack.HtmlDocument doc = new
HtmlAgilityPack.HtmlDocument();
doc.Load(webBrowser1.DocumentStream);
或者你可以这样做
HtmlAgilityPack.HtmlDocument doc = new
HtmlAgilityPack.HtmlDocument();
doc.Load(webBrowser1.Document);
Thanks
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)