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