gpt4 book ai didi

c# - 如何使用 C# 替换 HTML 标签内部文本内容!

转载 作者:搜寻专家 更新时间:2023-10-31 22:51:28 27 4
gpt4 key购买 nike

现在我正在开发一个 Internet Explorer 插件,它应该扫描 HTML 文档以查找纯文本的 URL,然后“链接化”它们。

我可以访问网站 DOM,并且有一个想法遍历所有 DOM 节点并使用 RegEx 搜索“链接”,以用 HTML 代码替换这些文本,但是,当更改“InnerText”属性时IHTMLElement 对象,它的所有子节点都丢失了,这会严重影响网站。

这是一些代码:

//This method is called when IE has finished loading a page
void _webBrowser2Events_DocumentComplete(object pDisp, ref object URL)
{
if (pDisp == _webBrowser2)
{
HTMLDocument pageContent = _webBrowser2.Document;
IHTMLElement bodyHtmlElmnt = pageContent.body;
fixElement(bodyHtmlElmnt);
}
}

这是 fixElement 方法:

void fixElement(IHTMLElement node)
{
if (node.innerText!=null && ((IHTMLElementCollection)node.children).length==0)
{
node.innerText= node.innerText.Replace("testString", "replaceWithThis");
}

foreach (IHTMLElement child in (node.children as mshtml.IHTMLElementCollection))
{
fixElement(child);
}
}

这有效,但仅适用于没有任何子节点的节点。

谁能帮我解决这个问题,我将不胜感激!

问候

//亨里克

最佳答案

为什么你不想像这样使用 javscript http://userscripts.org/scripts/review/1352然后只需使用您的 c# 代码执行此 javascript。只是

webBrowser1.Navigate(new Uri("javascript:<YOURSCRIPT>"));

这样做的好处是你可以做很多事情,甚至不需要重新发明它们,url 链接化很久以前就被 javascript 人发明了,所以只要使用那个代码..

如果任何脚本(像这个很大,那么你可以使用这个脚本从 *.js 文件插入)

javascript:(function(){document.body.appendChild(document.createElement('script')).src='<YOUR SCRIPT URL>';})();

替换为您在互联网或本地托管的 javascript(如果本地使用 file://url 格式)

关于c# - 如何使用 C# 替换 HTML 标签内部文本内容!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799321/

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