1
我想用HTMLAgility pack来替换文档中的节点和文本节点。这样做的目的是去除节点本身周围的标签。目前,我做这样的事情:有没有办法用HTMLAgilityPack替换带有文本节点的html节点?
//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);
}
(错字指出后更新,但问题仍然存在)
我使用的方法错了吗?我应该用另一种方法来执行这样的功能吗?谢谢。
你完全正确,那是我在写这张票时犯的一个错字。所以,亚历克斯,你告诉我,当你尝试使用ReplaceChild方法时你不会收到无效的转换异常?如果是这样的话,我将不得不调查我使用的版本是否存在问题。对我来说,升级敏捷包并不是微不足道的(至少对于我使用的应用程序来说...否则,是的,下载最新源代码是相当简单的)。 – 2012-03-21 15:44:55
@Arthur Edmunds,你可以粘贴HTML代码片段,导致一个'InvalidCastException'给你吗? – Alex 2012-03-22 07:19:42