gpt4 book ai didi

C# WPF Webbrowser msHTML - 探索 DOM - 查找元素

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:32 26 4
gpt4 key购买 nike

我实际上正在使用 WPF 和 WPF WebBrowser 在 C# 中开发个人项目。我真的需要探索 html DOM 元素,就像我们过去在 javascript 或 php..etc 中所做的那样

在我的主窗口中我有这个变量:

private mshtml.HTMLDocument mainDocument = new mshtml.HTMLDocument();

在我的 webBrowser LoadComplete 回调中我有这个:

mainDocument = (mshtml.HTMLDocument) mainBrowser.Document;

好的,这很好,它正在工作。

现在如果我这样做:

mshtml.IHTMLElement elem = mainDocument.getElementById("MY_ID");

它也很好,可以做 elem.innerHTML 或类似的东西。

但我的问题是只有 HTMLDocument 具有通过 ID、标记名等查找元素的方法

我不知道如何在 IHTMLElement 中查找元素。我尝试了一些东西,比如将 IHTMLElement 转换为 IHTMLElement2..等等,但没有任何效果。

如果你有任何想法,请。很多人都在谈论托管 winforms webbrowser,但我认为它必须有一种方法可以只用 mshtml 来做到这一点。

非常感谢,如果您需要更多信息,请随时问我

ps : 我是法国人,所以我对我的英语水平感到抱歉

最佳答案

如果你想在 Winforms 或 wpf 中解析 HTML 文档,你可以使用一个优秀的解析器 htmlagility pack。引用以下链接 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);

谢谢

关于C# WPF Webbrowser msHTML - 探索 DOM - 查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44918745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com