【发布时间】:2015-01-05 02:00:33
【问题描述】:
我使用 HtmlAgilityPack 来解析 webbrowser 控件的 html 文档。 我能够找到我想要的 HtmlNode,但是在获得 HtmlNode 之后,我想在 WebbrowserControl.Document 中重新调整相应的 HtmlElement。
事实上,HtmlAgilityPack 会解析实时文档的离线副本,而我想访问 webbrowser 控件的实时元素以访问一些呈现的属性,例如 currentStyle 或 runtimeStyle
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(webBrowser1.Document.Body.InnerHtml);
var some_nodes = doc.DocumentNode.SelectNodes("//p");
// this selection could be more sophisticated
// and the answer shouldn't relay on it.
foreach (HtmlNode node in some_nodes)
{
HtmlElement live_element = CorrespondingElementFromWebBrowserControl(node);
// CorrespondingElementFromWebBrowserControl is what I am searching for
}
如果元素具有特定属性,这可能很容易,但我想要一个适用于任何元素的解决方案。
请帮我解决一下。
【问题讨论】:
-
控制文档中返回对应的htmlnode是什么意思?哪个节点是匹配的,您希望以哪种方式显示它?
-
@Xenogenesis 我在问题中提供了一个代码来表达我的意思。
-
问题是你必须指定你需要的元素应该匹配哪些搜索条件有了这个条件,例如所有作为链接或元素名称中包含“k”的子节点,你可以使用通过
item的子节点的递归循环 -
@Xenogenesis 我编辑了我的问题,它不是关于匹配,只是对应的元素。我可以在 HtmlAgilityPack 中找到任何元素,但我需要一个指向 Web 浏览器控件中真实元素的指针,我想知道为什么 HtmlAgilityPack 本身不提供这种关系!它只是以htmlNode的格式处理控件的html的离线副本!
-
举例说明您的 HTML 以及您尝试获取的节点 .. 这将有助于我们为您提供帮助
标签: c# html webbrowser-control html-agility-pack