gpt4 book ai didi

c# - 有没有办法使用 HTMLAgilityPack 将 html 节点替换为文本节点?

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:56 25 4
gpt4 key购买 nike

我想使用 HTMLAgility 包将文档中的节点替换为文本节点。这样做的目的是删除节点本身周围的标签。目前,我做这样的事情:

//This code fixes redundant HTML formatting tags
//This is a snippet of code
foreach (var hChildNode in hd.DocumentNode.SelectNodes("//b//b | //i//i | //u//u") ?? Enumerable.Empty<HtmlNode>())
hChildNode.Name = "remove";
StringBuilder sb = new StringBuilder(hd.DocumentNode.WriteTo());
sb.Replace("<remove>", string.Empty);
sb.Replace("</remove>", string.Empty);

有更好的方法吗?如果我尝试创建一个新的文本节点,然后执行类似于下面的代码片段的操作,我会收到一个无效的转换错误:

foreach (var hChildNode in hd.DocumentNode.SelectNodes("//b//b | //i//i | //u//u") ?? Enumerable.Empty<HtmlNode>())
{
HtmlNode hNewNode = hd.CreateTextNode(hChildNode.InnerHtml);
hChildNode.ParentNode.ReplaceChild(hNewNode, hChildNode);
}

(指出错别字后更新,但问题依旧)

我是不是用错了方法?我应该使用另一种方法来执行这样的功能吗?谢谢。

最佳答案

The purpose of this is to remove tags surrounding the node itself

你的第二个代码片段完全执行 标签删除 除了一个错字(我猜):

HtmlNode hNewNode = hd.CreateTextNode(hNewNode.InnerHtml);

您应该将 hNewNode.InnerHtml 替换为 hChildNode.InnerHtml 否则您的代码甚至无法编译(使用未分配的变量)。

还想提一下,在创建文本节点后,它不会有被替换节点的子节点(取而代之的是,它将具有与替换节点相同的 InnerHtml 属性值) .

关于c# - 有没有办法使用 HTMLAgilityPack 将 html 节点替换为文本节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776303/

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