小编Art*_*nds的帖子

有没有办法使用 HTMLAgilityPack 用文本节点替换 html 节点?

我想使用 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);
Run Code Online (Sandbox Code Playgroud)

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

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);
}
Run Code Online (Sandbox Code Playgroud)

(在指出错字后更新,但问题仍然存在)

我使用的方法有误吗?我应该使用另一种方法来执行这样的功能吗?谢谢。

html c# dom html-agility-pack

2
推荐指数
1
解决办法
2992
查看次数

标签 统计

c# ×1

dom ×1

html ×1

html-agility-pack ×1