Я действительно новичок в использовании HTMLAgilityPack.У меня есть следующий HTML-документ:
HTMLAgilityPack
<a href="https://twitter.com/RedGiantNews" target="_blank"><img src="http://image.e.redgiant.com/lib/998.png" width="24" border="0" alt="Twitter" title="Twitter" class="smImage"></a><a href="https://www.facebook.com/RedGiantSoftware" target="_blank"><img src="http://image.e.redgiant.com/lib/db5.png" width="24" border="0" alt="Facebook" title="Facebook" class="smImage"></a> http://click.e.redgiant.com/?qs=d2ad061f <a href="https://www.instagram.com/redgiantnews/" target="_blank"><img src="http://image.e.redgiant.com/aa10-f8747e56f06d.png" width="24" border="0" alt="Instagram" title="Instagram" class="smImage"></a>
Я пытаюсь удалить все изображения, я имею в виду все узлы (если это правильное слово) <img....> из HTML-файла.Я попробовал приведенный ниже код из другого решения на StackOverflow, но тщетно, поскольку он возвращает тот же HTMl, что и выше:
<img....>
var sb = new StringBuilder(); doc.LoadHtml(inputHTml); foreach (var node in doc.DocumentNode.ChildNodes) { if (node.Name != "img" && node.Name!="a") { sb.Append(node.InnerHtml); } }
static string OutputHtml = @"<a href=""https://twitter.com/RedGiantNews"" target=""_blank""><img src=""http://image.e.redgiant.com/lib/998.png"" width=""24"" border=""0"" alt=""Twitter"" title=""Twitter"" class=""smImage""></a><a href = ""https://www.facebook.com/RedGiantSoftware"" target=""_blank""><img src = ""http://image.e.redgiant.com/lib/db5.png"" width=""24"" border=""0"" alt=""Facebook"" title=""Facebook"" class=""smImage""></a> <a href = ""https://www.instagram.com/redgiantnews/"" target=""_blank""><img src = ""http://image.e.redgiant.com/aa10-f8747e56f06d.png"" width=""24"" border=""0"" alt=""Instagram"" title=""Instagram"" class=""smImage""></a>";
Я удалил плавающую ссылку (http://click.e.redgiant.com/?qs=d2ad061f) из исходной строки html.
Первый подход:
public static string RemoveAllImageNodes(string html) { try { HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); document.LoadHtml(html); var nodes = document.DocumentNode.SelectNodes("//img"); foreach (var node in nodes) { node.Remove(); //node.Attributes.Remove("src"); //This only removes the src Attribute from <img> tag } html = document.DocumentNode.OuterHtml; return html; } catch (Exception ex) { throw ex; } }
Второй подход:
public static string RemoveAllImageNodes(string html) { try { HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); document.LoadHtml(html); if (document.DocumentNode.InnerHtml.Contains("<img")) { foreach (var eachNode in document.DocumentNode.SelectNodes("//img")) { eachNode.Remove(); //eachNode.Attributes.Remove("src"); //This only removes the src Attribute from <img> tag } } html = document.DocumentNode.OuterHtml; return html; } catch (Exception ex) { throw ex; } }
OutPut Html:
<a href="https://twitter.com/RedGiantNews" target="_blank"></a> <a href="https://www.facebook.com/RedGiantSoftware" target="_blank"></a> <a href="https://www.instagram.com/redgiantnews/" target="_blank"></a>
Output Html - после удаления только атрибутов "src" из тегов "img":
<a href="https://twitter.com/RedGiantNews" target="_blank"><img width="24" border="0" alt="Twitter" title="Twitter" class="smImage"></a> <a href="https://www.facebook.com/RedGiantSoftware" target="_blank"><img width="24" border="0" alt="Facebook" title="Facebook" class="smImage"></a> <a href="https://www.instagram.com/redgiantnews/" target="_blank"><img width="24" border="0" alt="Instagram" title="Instagram" class="smImage"></a>