gpt4 book ai didi

c# - 基于 HtmlAgilityPack.HtmlNode 获取 Html 元素

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:29 25 4
gpt4 key购买 nike

我使用 HtmlAgilityPack 来解析 webbrowser 控件的 html 文档。我能够找到我想要的 HtmlNode,但是在获得 HtmlNode 之后,我想在 WebbrowserControl.Document 中重新调整相应的 HtmlElement。

事实上,HtmlAgilityPack 解析实时文档的离线副本,而我想访问网络浏览器控件的实时元素以访问一些呈现的属性,如 currentStyleruntimeStyle

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
}

如果元素有一个特定的属性,这可能很容易,但我想要一个适用于任何元素的解决方案。

请帮帮我,我该怎么做。

最佳答案

事实上,似乎没有直接在webbroser 控件中直接更改文档的可能性。但是您可以从中提取 html,对其进行处理并像这样再次写回:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(webBrowser1.DocumentText);

foreach (HtmlAgilityPack.HtmlNode node in doc.DocumentNode.ChildNodes) {
node.Attributes.Add("TEST", "TEST");
}

StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb)) {
doc.Save(sw);
webBrowser1.DocumentText = sb.ToString();
}

对于直接操作,您可以使用指向文档的非托管指针 webBrowser1.Document.DomDocument,但这超出了我的知识范围。

关于c# - 基于 HtmlAgilityPack.HtmlNode 获取 Html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22833160/

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